Part Number Hot Search : 
MPX200 HCTS20MS F245B 1N3647E3 C8028 MAX87 A1050 170CA
Product Description
Full Text Search
 

To Download EW31244SL7QV Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  intel ? 31244 pci-x to serial ata controller developer?s manual april 2004 order number: 273603-006
2 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller information in this document is provided in connection with intelr products. except as provided in intel?s terms and conditions of sale for such products, intel assumes no liability whatsoever, and intel disclaims any express or implied warranty relating to sale and/or use of intel products, including liability or warranties relating to fitness for a particular purpose, merchantability, or infringement of any patent, copyright, or other intellectual property right. intel corporation may have patents or pending patent applications, trademarks, copyrights, or other intellectual property right s that relate to the presented subject matter. the furnishing of documents and other materials and information does not provide any license, express or implied, by estoppel or otherwise, to any such patents, trademarks, copyrights, or other intellectual property rights. intel products are not intended for use in medical, life saving, life sustaining, critical control or safety systems, or in nuc lear facility applications. intel may make changes to specifications and product descriptions at any time, without notice. designers must not rely on the absence or characteristics of any features or instructions marked ?reserved? or ?undefined.? int el reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. the intel ? 31244 pci-x to serial ata controller may contain design defects or errors known as errata which may cause the product to deviate from published specifications. current characterized errata are available on request. contact your local intel sales office or your distributor to obtain the latest specifications and before placing your product o rder. copies of documents which have an ordering number and are referenced in this document, or other intel literature may be obtaine d by calling 1-800-548-4725 or by visiting intel's website at http://www.intel.com. anypoint, appchoice, boardwatch, bunnypeople, cableport, celeron, chips, ct media, dialogic, dm3, etherexpress, etox, flashfile , i386, i486, i960, icomp, instantip, intel, intel centrino, intel logo, inte l386, intel486, intel740, inteldx2, inteldx4, intelsx2, intel cr eate & share, intel gigablade, intel inbusiness, intel inside, intel inside logo, intel netburst, intel netmerge, intel netstructure, intel play, intel play l ogo, intel singledriver, intel speedstep, intel strataflash, intel teamstation, intel xeon, intel xscale, iplink, itanium, mcs, mmx, mmx logo, optimizer logo, overdrive, paragon, pc dads, pc parents, pdcharm, pentium, pentium ii xeon, pentium iii xeon, performance at your command, remoteexpress, smartdie, solutions960, sound mark, storageexpress, the computer inside., the journey inside, tokenexpress, voicebrick, vtune, and xircom are trademarks or registered trademarks of intel corporation or its subsidiaries in the united states and other countries. *other names and brands may be claimed as the property of others. copyright ? 2004, intel corporation
developer?s manual april 2004 3 intel ? 31244 pci-x to serial ata controller contents 1 about this document ........................................................................................................... .........15 1.1 reference documents ........................................................................................................1 5 1.2 terminology and conventions ............................................................................................16 1.2.1 representing numbers ..........................................................................................16 1.2.2 fields .................................................................................................................... .16 1.2.3 specifying bit and signal values ........................................................................... 17 1.2.4 signal name conventions .....................................................................................17 1.2.5 terminology ...........................................................................................................18 2 overview...................................................................................................................... ..................21 2.1 features.................................................................................................................... ..........22 2.2 pci-x interface ............................................................................................................. ......22 2.3 pci commands supported in m/s (pci ide) mode ...........................................................23 2.3.1 pci commands supported in dpa mode.............................................................. 24 2.4 serial ata interface........................................................................................................ ....25 2.5 modes of operation .......................................................................................................... ..27 2.5.1 master/slave mode (or pci ide mode) .................................................................27 2.5.2 direct port access mode .......................................................................................27 2.5.3 selecting dpa or m/s mode ..................................................................................28 2.5.4 dpa mode port initialization .................................................................................. 28 2.6 serial eeprom interface ...................................................................................................29 2.7 extended voltage mode ..................................................................................................... 29 2.8 activity leds ............................................................................................................... ..30 2.8.1 reference clock generation ................................................................................. 31 2.9 high-end storage features ................................................................................................31 2.10 jtag interface............................................................................................................. .......31 3 serial eeprom................................................................................................................. ............32 3.1 write status register (wrsr) command ..........................................................................34 3.1.1 program command...........................................................................................35 3.1.2 read command ...................................................................................................36 3.1.3 write disable (wrdi) command ...........................................................................37 3.1.4 read status register (rdsr) command.............................................................. 38 3.1.5 write enable (wren) command ..........................................................................39 3.1.6 sector erase (sect_erase) command .............................................................40 3.1.7 chip_erase command ......................................................................................41 3.1.8 read id register (rdid) command...................................................................... 42 3.1.9 serial eeprom spi interface ? address 90h .......................................................43 3.1.9.1 programming details .............................................................................43 3.1.9.2 spi command / control / status register - address 90h ...................... 45 3.1.9.2.1 spi command.................................................................................45 3.1.9.2.2 spi control......................................................................................45 3.1.9.2.3 spi status .......................................................................................45 3.1.9.3 spi data register - address 94h ...........................................................46 3.1.10 detection of the eeprom at power-up ................................................................46
4 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller 4 functional blocks ............................................................................................................. ............. 48 4.1 serial ata.................................................................................................................. ......... 48 4.1.1 out-of-band signaling ........................................................................................... 50 4.2 operational blocks.......................................................................................................... .... 53 4.2.1 serial engine ......................................................................................................... 54 4.2.2 register interface .................................................................................................. 54 4.2.3 dma controller ...................................................................................................... 55 4.2.3.1 dma operation ...................................................................................... 57 4.2.3.2 data synchronization............................................................................. 58 4.2.3.3 dma error conditions ............................................................................ 59 4.2.3.4 dma throughput.................................................................................... 60 4.2.4 programmed i/o (pio)........................................................................................... 62 4.2.5 serial ata ii native command queuing ............................................................... 63 4.2.5.1 race-free status return mechanism..................................................... 64 4.2.5.2 interrupt aggregation ............................................................................. 64 4.2.5.3 first party dma (fpdma)......................................................................65 5 programming interface......................................................................................................... ......... 66 5.1 pci ide mode................................................................................................................ ..... 67 5.1.1 native-pci mode ................................................................................................... 67 5.2 direct port access mode .................................................................................................... 6 9 5.2.1 common serial ata port registers ......................................................................70 5.2.2 command block registers .................................................................................... 70 5.2.3 control block registers .........................................................................................71 5.2.4 dma controller registers...................................................................................... 71 5.2.5 sata superset registers...................................................................................... 72 5.3 ata command processing ................................................................................................ 74 5.3.1 lba addressing in pci ide mode ......................................................................... 75 5.3.2 lba addressing in dpa mode............................................................................... 76 5.4 reset initialization........................................................................................................ ....... 77 5.5 serial ata bist............................................................................................................. ..... 79 5.5.1 loopback mode testing ........................................................................................ 81 5.5.2 transmit-only mode testing ................................................................................. 82 5.6 pci bus error conditions.................................................................................................... 83 5.6.1 address and attribute parity errors on the pci interface ...................................... 83 5.6.2 data parity errors on the pci interface ................................................................. 84 5.6.2.1 outbound read request data parity errors.......................................... 84 5.6.2.1.1 immediate data transfer ................................................................ 84 5.6.2.1.2 split response termination ............................................................ 85 5.6.2.2 outbound write request data parity errors.......................................... 86 5.6.2.2.1 outbound writes that are not msi (message signaled interrupts). 86 5.6.2.2.2 msi outbound writes...................................................................... 86 5.6.2.3 inbound read request data parity errors ............................................ 87 5.6.2.3.1 immediate data transfer ................................................................ 87 5.6.2.4 inbound write request data parity errors............................................. 87 5.6.2.5 outbound read completion data parity errors..................................... 87 5.6.2.6 split completion messages ................................................................... 88 5.6.3 master aborts on the pci interface ....................................................................... 89 5.6.3.1 master-aborts signaled by intel ? 31244 pci-x to serial ata controller as an initiator .........................................................................................89 5.6.3.1.1 master aborts for outbound read or write request ...................... 89
developer?s manual april 2004 5 intel ? 31244 pci-x to serial ata controller 5.6.3.2 master-aborts signaled by intel ? 31244 pci-x to serial ata controller as a target.............................................................................................90 5.6.3.2.1 unsupported pci commands ......................................................... 90 5.6.3.2.2 pci ide control block registers.....................................................90 5.6.4 target aborts on the pci interface ........................................................................91 5.6.4.1 target aborts for outbound read request or outbound write request ........................................................................................ 91 5.6.4.2 target-aborts signaled by intel ? 31244 pci-x to serial ata controller as a target.............................................................................................92 5.6.4.2.1 configuration read and write......................................................... 92 5.6.4.2.2 i/o read and write .........................................................................92 5.6.4.2.3 memory read..................................................................................92 5.6.5 corrupted or unexpected split completions..........................................................93 5.6.5.1 completer address ................................................................................93 5.6.5.2 completer attributes ..............................................................................93 5.6.6 serr# assertion and detection............................................................................94 5.6.7 pci error summary ...............................................................................................95 5.7 serial ata bus and device error conditions ..................................................................... 98 5.7.1 serial ata device error conditions.......................................................................98 5.7.2 serial ata bus and protocol error conditions ...................................................... 98 5.8 sata port interrupt generation........................................................................................100 5.9 message-signaled interrupts ............................................................................................ 102 5.9.1 level-triggered versus edge-triggered interrupts .............................................102 5.10 register definitions....................................................................................................... ....103 5.10.1 pci ide mode registers......................................................................................103 5.10.2 pci configuration registers ................................................................................109 5.10.2.1 su vendor id register - suvid ..........................................................109 5.10.2.2 su device id register - sudid...........................................................110 5.10.2.3 su command register - sucmd........................................................111 5.10.2.4 su status register - susr .................................................................112 5.10.2.5 su revision id register - surid........................................................113 5.10.2.6 su class code register - succr ....... ...............................................114 5.10.2.7 su cacheline size register - suclsr...............................................115 5.10.2.8 su latency timer register - sult .....................................................116 5.10.2.9 su header type register - suhtr .................................................... 117 5.10.2.10 su bist register - subistr ..............................................................118 5.10.2.11 su base address register 0 - subar0..............................................119 5.10.2.12 su base address register 1 - subar1..............................................120 5.10.2.13 su base address register 2 - subar2..............................................121 5.10.2.14 su base address register 3 - subar3..............................................122 5.10.2.15 su base address register 4 - subar4..............................................123 5.10.2.16 su base address register 5 - subar5..............................................124 5.10.2.17 su subsystem vendor id register - susvir ..................................... 125 5.10.2.18 su subsystem id register - susir ....................................................126 5.10.2.19 su expansion rom base address register - suexrombar .......... 127 5.10.2.20 su capabilities pointer register - su_cap_ptr .................................. 128 5.10.2.21 su expansion rom base address - suexrom ................................129 5.10.2.22 su interrupt line register - suilr......................................................130 5.10.2.23 su interrupt pin register - suipr .......................................................131 5.10.2.24 su minimum grant register - sumgnt .............................................132 5.10.2.25 su maximum latency register - sumlat..........................................133 5.10.2.26 spi command register - spicmdr ...................................................134 5.10.2.27 spi control register - spicntr .........................................................135
6 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller 5.10.2.28 spi status register - spistatr......................................................... 136 5.10.2.29 spi data register - spidatr .............................................................137 5.10.2.30 su extended control and status register 0 - suecsr0 ................... 138 5.10.2.31 su dma control status register- sudcscr..................................... 139 5.10.2.32 su dummy register sudr ................................................................. 140 5.10.2.33 su interrupt status register suisr .................................................... 141 5.10.2.34 su interrupt mask register suimr ..................................................... 142 5.10.2.35 su transaction control sutcr .......................................................... 143 5.10.2.36 su target split completion message enable register sutscmer .. 144 5.10.2.37 su target delayed/split request pending register sudrpr ........... 145 5.10.2.38 su transaction control 2 register sutc2r....................................... 146 5.10.2.39 su master deferred/split sequence pending register - sumdspr .. 148 5.10.2.40 su master split completion message received with error message register - sumscmremr.................................. 149 5.10.2.41 su arbiter control - suacr ................................................................ 150 5.10.2.42 su pci-x c apability identifier register - supci-x_cap_id ............... 151 5.10.2.43 su pci-x next item pointer register - supci-x_next_item_ptr ....... 152 5.10.2.44 su pci-x command register - supcixcmd..................................... 153 5.10.2.45 su pci-x status register - supcixsr .............................................. 154 5.10.2.46 su pm capability identifier register - supm_cap_id........................ 156 5.10.2.47 su pm next item pointer register - supm_next_item_ptr................157 5.10.2.48 su power management capabilities register - supmcr .................. 158 5.10.2.49 su power management control/status register - supmcsr ........... 159 5.10.2.50 su msi capab ility identifier register - sumsi_cap_id...................... 160 5.10.2.51 su msi next item pointer register - sumsi_next_ptr....................... 161 5.10.2.52 su msi message control register - sumsi_message_control ......... 162 5.10.2.53 su msi message address register - sumsi_message_address ...... 163 5.10.2.54 su msi message upper address register - sumsi_message_upper_address ...................................................... 164 5.10.2.55 su msi message data register- sumsi_message_data .................. 165 5.10.3 su pci ide mode command block registers .................................................... 166 5.10.3.1 su ide data port register - suidr .................................................... 166 5.10.3.2 su ide error register - suier ........................................................... 167 5.10.3.3 su ide features register - suifr ..................................................... 168 5.10.3.4 su ide sector count register - suiscr............................................ 169 5.10.3.5 su ide sector number register - suisnr......................................... 170 5.10.3.6 su ide cylinder low register - suiclr ............................................ 171 5.10.3.7 su ide cylinder high register - suichr ........................................... 172 5.10.3.8 su ide device/head register - suidr...............................................173 5.10.3.9 su ide status register - suisr ......................................................... 174 5.10.3.10 su ide command register - suicr................................................... 175 5.10.4 su pci ide mode control block registers ......................................................... 176 5.10.4.1 su ide device control register - suidcr ......................................... 176 5.10.4.2 su ide alternate status register - suiasr ....................................... 177 5.10.5 su pci ide mode dma registers....................................................................... 178 5.10.5.1 su ide channel 0 dma command register - suicdcr0 ................. 178 5.10.5.2 su ide channel 0 dma status register - suicdsr0........................ 179 5.10.5.3 su ide channel 0 dma descriptor table pointer register - suicddtpr0 ............. ....................... ............ ....... .. 180 5.10.5.4 su ide channel 1 dma command register - suicdcr1 ................. 181 5.10.5.5 su ide channel 1 dma status register - suicdsr1........................ 182 5.10.5.6 su ide channel 1 dma descriptor table pointer register - suicddtpr1 ............. ....................... ............ ....... .. 183 5.10.6 su pci dpa mode registers .............................................................................. 184
developer?s manual april 2004 7 intel ? 31244 pci-x to serial ata controller 5.10.7 su pci dpa mode base address registers .......................................................192 5.10.7.1 su pci dpa base address register 0 - supdbar0 .........................192 5.10.7.2 su pci dpa upper base address register 0 - supdubar0 ............193 5.10.8 su pci dpa mode common sata port registers.............................................194 5.10.8.1 su pci dpa interrupt pending register - supdipr ..........................194 5.10.8.2 su pci dpa interrupt mask register - supdimr ..............................200 5.10.9 su pci dpa mode command block registers ................................................... 203 5.10.9.1 su pci dpa data port register - supddr........................................203 5.10.9.2 su pci dpa error register - supder ...............................................204 5.10.9.3 su pci dpa features register - supdfr .........................................205 5.10.9.4 su pci dpa sector count register - supdscr ...............................206 5.10.9.5 su pci dpa sector number register - supdsnr ............................207 5.10.9.6 su pci dpa cylinder low register - supdclr ................................208 5.10.9.7 su pci dpa cylinder high register - supdchr...............................209 5.10.9.8 su pci dpa device/head register - supddr .................................. 210 5.10.9.9 su pci dpa status register - supdsr .............................................211 5.10.9.10 su pci dpa command register - supdcr ......................................212 5.10.10 su pci dpa mode control block registers ........................................................213 5.10.10.1 su pci dpa alternate status register - supdasr ...........................213 5.10.10.2 su pci dpa device control register - supddctlr ........................214 5.10.11 su pci dpa mode dma registers .....................................................................215 5.10.11.1 su pci dpa upper dma descriptor table pointer register - supduddtpr .......................................................215 5.10.11.2 su pci dpa upper dma data pointer register - supduddbpr .....216 5.10.11.3 su pci dpa dma command register - supddcmdr ..................... 217 5.10.11.4 su pci dpa dma status register - supddsr .................................218 5.10.11.5 su pci dpa dma descriptor table pointer register - supdddtpr 219 5.10.12 su pci dpa mode superset registers ............................................................... 220 5.10.12.1 su pci dpa sata sstatus register - supdsssr ...........................220 5.10.12.2 su pci dpa sata serror register - supdsser .............................222 5.10.12.3 su pci dpa sata scontrol regist er - supdsscr..........................225 5.10.12.4 su pci dpa set device bits register - supdsdbr..........................226 5.10.12.5 su pci dpa phy feature register - supdpfr ................................227 5.10.12.6 su pci dpa bist fis control and status register - supdbfcsr .. 228 5.10.12.7 su pci dpa bist errors register - supdber ..................................231 5.10.12.8 su pci dpa bist frames register - supdbfr................................232 5.10.12.9 su pci dpa host bist data low register - supdhbdlr ...............233 5.10.12.10su pci dpa host bist data high register - supdhbdhr............. 234 5.10.12.11su pci dpa device bist data low register - supddbdlr........... 235 5.10.12.12su pci dpa device bist data high register - supddbdhr ......... 236 5.10.12.13su pci dpa queuing table base address register low - supdqtbarl...........................................................................237 5.10.12.14su pci dpa queuing table base address register high - supdqtbarh .........................................................................238 5.10.12.15su pci dpa dma setup fis control and status register - supddsfcsr ........................................................239 5.10.12.16su pci dpa host dma buffer identifier low register - supdhdbilr... ...........................................................240 5.10.12.17su pci dpa host dma buffer identifier high register - supdhdbihr ............................................................241 5.10.12.18su pci dpa host reserved dword register 0 - supdhrdr0.....242 5.10.12.19su pci dpa host dma buffer offset register - supdhdbor ........ 243 5.10.12.20su pci dpa host dma transfer count register - supdhdtcr .....244 5.10.12.21su pci dpa host reserved dword register 1- supdhrdr1...... 245
8 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller 5.10.12.22su pci dpa device dma buffer identifier low register - supdddbilr.............................................................. 246 5.10.12.23su pci dpa device dma buffer identifier high register - supdddbihr ................ ....................... ............ ....... .. 247 5.10.12.24su pci dpa host reserved dword register 0 - supdhrdr0..... 248 5.10.12.25su pci dpa device dma buffer offset register - supdddbor..... 249 5.10.12.26su pci dpa device dma transfer count register - supdddtcr . 250 5.10.12.27su pci dpa device reserved dword register 1 - supddrdr1 . 251
developer?s manual april 2004 9 intel ? 31244 pci-x to serial ata controller figures 1intel ? 31244 pci-x to serial ata controller block diagram ...................................................... 21 2 serial ata unit block diagram................................................................................................. ..26 3 common led and serial eeprom options ..............................................................................30 4 serial eeprom interface ....................................................................................................... ....32 5 write status register (wrsr) operation...................................................................................34 6 write memory (program) operation, 4 byte ..........................................................................35 7 read memory (read) operation, 4 byte...................................................................................36 8 write disable (wrdi) operation................................................................................................ .37 9 read status register (rdsr) operation ...................................................................................38 10 write enable (wren) operation ................................................................................................ 39 11 sector erase (sect_erase) operation ...................................................................................40 12 chip erase (chip_erase) operation .......................................................................................41 13 read id register (rdid) operation ...........................................................................................4 2 14 sata protocol layers ......................................................................................................... .......49 15 analog front end (afe) cabling and oob signals ................................................................... 50 16 oob signals timings .......................................................................................................... .......50 17 comreset se quence .............................................................................................................. 51 18 cominit sequence ............................................................................................................. ......52 19 sata port block diagram ...................................................................................................... ....53 20 dma descriptor table ......................................................................................................... .......56 21 dma arbitration .............................................................................................................. ............60 22 sata unit register mapping in native-pci mode......................................................................68 23 sata unit register mapping in direct port access mode .........................................................69 24 common serial ata port registers ...........................................................................................70 25 command block registers for sata port 0 ............................................................................... 70 26 control block registers for sata port 0 ....................................................................................71 27 dma controller registers for sata port 0.................................................................................71 28 far-end retimed loopback setup ............................................................................................. 79 29 far-end analog loopback setup................................................................................................ 80 30 near-end analog loopback setup .............................................................................................80 31 sata unit interrupt generation block diagram .......................................................................101 32 su in pci ide mode interface configuration header format ..................................................103 33 sata unit interface extended configuration header format (pci-x capability) .................... 104 34 su in pci ide mode interface extended configuration header format (power management)................................................................................................... 104 35 su in pci ide mode interface extended configuration header format (msi capability)........ 105
10 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller tables 1 reference documents........................................................................................................... ..... 15 2 terms and definitions......................................................................................................... ........18 3 pci commands supported in pci ide mode............................................................................. 23 4 pci commands supported in dpa mode .................................................................................. 24 5 dpa mode interface features ................................................................................................... .27 6 bar register usage in m/s and dpa modes............................................................................. 28 7 normal voltage mode ........................................................................................................... ......29 8 extended voltage mode ......................................................................................................... .... 29 9 serial eeprom interface pins.................................................................................................. .33 10 sclk frequency ............................................................................................................... ......... 33 11 serial eeprom commands ...................................................................................................... 3 3 12 block write protect bits ..................................................................................................... ......... 34 13 byte enables on rom memory reads.......................................................................................36 14 status register format (refer to atmel* at25f1024 datasheet).............................................. 38 15 write and read command types .............................................................................................. 44 16 pci byte enables on read and write operations ...................................................................... 44 17 spi command .................................................................................................................. .......... 45 18 spi control .................................................................................................................. ............... 45 19 spi status................................................................................................................... ................ 45 20 spi data register - address 94h .............................................................................................. .46 21 interrupt /activity status combinations...................................................................................... .58 22 pci-x bus efficiency for reads ............................................................................................... ... 60 23 pci-x bus efficiency for writes .............................................................................................. .... 60 24 read transfer rate on pci-x bus ............................................................................................. 6 1 25 write transfer rate on pci-x bus ............................................................................................. 61 26 sata port register mapping in native pci ide mode .............................................................. 67 27 sata superset registers for sata port 0 in dpa mode .......................................................... 73 28 28-bit lba address bit layout in pci ide mode ....................................................................... 75 29 48-bit lba address bit layout ................................................................................................ ... 75 30 48-bit address loading sequence ............................................................................................. 7 5 31 28-bit lba address bit layout in dpa mode ............................................................................. 76 32 48-bit lba address bit layout in dpa mode ............................................................................. 76 33 31244 controller error reporting summary - pci interface ...................................................... 95 34 31244 controller serial ata protocol and bus error conditions ............................................... 98 35 sata unit pci configuration space registers ........................................................................ 106 38 sata dma registers in pci ide mode ................................................................................... 108 36 sata command block registers in pci ide mode................................................................. 108 37 sata control block registers in pci ide mode...................................................................... 108 39 su vendor id register - suvid ............................................................................................... 1 09 40 su device id register - sudid ............................................................................................... 1 10 41 su command register - sucmd ............................................................................................ 111 42 su status register - susr.................................................................................................... .. 112 43 su revision id register - surid ............................................................................................11 3 44 su class code register - succr........................................................................................... 114 45 su cacheline size register - suclsr ................................................................................... 115 46 su latency timer register - sult .......................................................................................... 116 47 su header type register - suhtr......................................................................................... 117 48 su bist register - subistr .................................................................................................. 1 18 49 su base address register 0 - subar0 .................................................................................. 119
developer?s manual april 2004 11 intel ? 31244 pci-x to serial ata controller 50 su base address register 1 - subar1 ..................................................................................120 51 su base address register 2 - subar2 ..................................................................................121 52 su base address register 3 - subar3 ..................................................................................122 53 su base address register 4 - subar4 ..................................................................................123 54 su base address register 5 - subar5 ..................................................................................124 55 su subsystem vendor id register - susvir .......................................................................... 125 56 su subsystem id register - susir.........................................................................................126 57 su expansion rom base address register - suexrombar ...............................................127 58 su capabilities pointer register - su_cap_ptr .......................................................................128 59 su expansion rom base address - suexrom .....................................................................129 60 su interrupt line register - suilr ..........................................................................................1 30 61 su interrupt pin register - suipr............................................................................................ 131 62 su minimum grant register - sumgnt ..................................................................................132 63 su maximum latency register - sumlat ..............................................................................133 64 spi command register - spicmdr ........................................................................................134 65 spi control register - spicntr ..............................................................................................1 35 66 spi status register - spistatr..............................................................................................1 36 67 spi data register - spidatr .................................................................................................. 137 68 su extended control and status register 0 - suecsr 0 ....................................................... 138 69 su dma control status register - sudcscr 0........... ...........................................................139 70 su dummy register - sudr....................................................................................................1 40 71 su interrupt status register - suisr.......................................................................................14 1 72 su interrupt mask register - suimr........................................................................................142 73 su transaction control register - sutcr ..............................................................................143 74 su target split completion message enable register- sutscmer......................................144 75 su target split completion message enable register- sutscmer......................................145 76 su transaction control 2 register- sutc2r ..........................................................................146 77 su master split completion message received with error message register - sumscmremr ..................................................................................................................... ..148 78 su master split completion message received with error message register - sumscmremr ..................................................................................................................... ..149 79 su arbiter control register suacr.... .....................................................................................150 80 su pci-x_capability identifier register - supci-x_cap_id ................................................... 151 81 su pci-x next item pointer register - supci-x_next_item_ptr ............................................152 82 su pci-x command register - supcixcmd ......................................................................... 153 83 su pci-x status register - supcixsr ...................................................................................154 84 su pm_capability identifier register - supm_cap_id............................................................156 85 su pm next item pointer register - supm_next_item_ptr.....................................................157 86 su power management capabilities register - supmcr ....................................................... 158 87 su power management control/status register - supmcsr ................................................ 159 88 su msi capability identifier register - sumsi_cap_id........................................................... 160 89 su msi next item pointer register - sumsi_next_ptr............................................................161 90 su msi message control register - sumsi_message_control .............................................. 162 91 su msi message address register - sumsi_message_address ...........................................163 92 su msi message upper address register - su msi_message_upper_address .................... 164 93 su msi message data register - sumsi_message_data ...................................................... 165 94 su ide data port register - suidr.........................................................................................166 95 su ide error register - suier ................................................................................................ 167 96 su ide features register - suifr ..........................................................................................168 97 su ide sector count register - suiscr................................................................................. 169
12 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller 98 su ide sector number register - suisnr ............................................................................. 170 99 su ide cylinder low register - suiclr ................................................................................. 171 100 su ide cylinder high register - suichr................................................................................ 172 101 su ide device/head register - suidhr................................................................................. 173 102 su ide status register - suisr.............................................................................................. 174 103 su ide command register - suicr ....................................................................................... 175 104 su ide device control register - suidcr.............................................................................. 176 105 su ide alternate status register - suiasr ............................................................................ 177 106 su ide channel 0 dma command register - suicdcr0...................................................... 178 107 su ide channel 0 dma status register - suicdsr0 ............................................................ 179 108 su ide channel 0 dma descriptor table pointer register - suicddtpr0 ........................... 180 109 su ide channel 1 dma command register - suicdcr1...................................................... 181 110 su ide channel 1 dma status register - suicdsr1 ............................................................ 182 111 su ide channel 1 dma descriptor table pointer register - suicddtpr1 ........................... 183 112 configuration space comparison............................................................................................. 1 84 113 sata port registers mapping in pci dpa mode ....................................................................185 114 su pci dpa base address register 0 - sudbar0 ................................................................ 192 115 su pci dpa upper base address register 0 - supdubar0 ................................................ 193 116 su pci dpa interrupt pending register - supdipr ............................................................... 194 117 su pci dpa interrupt mask register - supdimr ................................................................... 200 118 su pci dpa data port register - supddr ............................................................................ 203 119 su pci dpa error register - supder.................................................................................... 204 120 su pci dpa features register - supdfr.............................................................................. 205 121 su pci dpa sector count register - supdscr ....... .............................................................206 122 su pci dpa sector number register - supdsnr.... ............................................................. 207 123 su pci dpa cylinder low register - supdclr..................................................................... 208 124 su pci dpa cylinder high register - supdchr ................................................................... 209 125 su pci dpa device/head register - supddhr .......... .............................. ................. ....... .... 210 126 su pci dpa status register - supd sr ................................................................................. 211 127 su pci dpa command register - supdcr ........................................................................... 212 128 su pci dpa alternate status register - supdasr................................................................ 213 129 su pci dpa device control register - supddctlr ... .............................. ................. ....... .... 214 130 su pci dpa upper dma descriptor table pointer register - supduddtpr ....................... 215 131 su pci dpa upper dma data buffer pointer re gister - supduddpr ........ .............. ....... .... 216 132 su pci dpa dma command register - supddcmdr.... ............................. .............. ....... .... 217 133 su pci dpa dma status register - supddsr...................................................................... 218 134 su pci dpa dma descriptor table pointer register - supdddtpr .................................... 219 135 su pci dpa sata sstatus register - supdsssr ................................................................ 220 136 su pci dpa sata serror register - supdsser ..................................................................222 137 su pci dpa sata scontrol register - supdsscr ...... ........................................................ 225 138 su pci dpa set device bits register - supdsdbr . ............................................................. 226 139 su pci dpa phy feature register - supdpfr........... .......................................................... 227 140 su pci dpa bist fis control and status register - supdbfcsr ....................................... 228 141 su pci dpa bist errors register - supdber ...................................................................... 231 142 su pci dpa bist frames register - supdbfr ....................................................................232 143 su pci dpa host bist data low register - supdhbdlr .................................................... 233 144 su pci dpa host bist data high register - supdhbdhr .................................................. 234 145 su pci dpa device bist data low register - supddbdlr ................................................ 235 146 su pci dpa device bist data high register - supddbdhr ...............................................236 147 su pci dpa device bist data high register - supddbdhr ...............................................237
developer?s manual april 2004 13 intel ? 31244 pci-x to serial ata controller 148 su pci dpa device bist data high register - supddbdhr ...............................................238 149 su pci dpa dma setup fis control and status register - supddsfcsr ..........................239 150 su pci dpa host dma buffer identifier low regi ster - supdhdbilr ..................................240 151 su pci dpa host dma buffer identifier high re gister - supdhdbihr.................................241 152 su pci dpa host reserved dword register 0 - supdhrdr 0.................. ........................242 153 su pci dpa host dma buffer offset register - supdhdbor ..............................................243 154 su pci dpa host dma transfer count register - supdhdtcr...........................................244 155 su pci dpa host reserved dword register 1- supdhrdr 1................... ........................245 156 su pci dpa device dma buffer identifier low register - supdddbilr...............................246 157 su pci dpa device dma buffer identifier high register - supdddbihr ............................. 247 158 su pci dpa device reserved dword register 0 - supddrdr0 .......................................248 159 su pci dpa device dma buffer offset register - supdddbor...........................................249 160 su pci dpa device dma transfer count register - supddtcr..........................................250 161 su pci dpa device reserved dword register 1 - supddrdr1 .......................................251
14 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller revision history date revision description april 2004 -006 removed section 2.9, ?spread spectrum clocking? ( page 31 ). removed definitions of ?ssc? and ?sscen? from ta b l e 2 , ?terms and definitions? on page 18 . removed references to ?ssc? and ?sscen? in section 5.10.12.5, ?su pci dpa phy feature register - supdpfr? on page 227 and table 139, ?su pci dpa phy feature register - supdpfr? on page 227 . february 2004 -005 minor corrections. january 2004 -004 updated several register definitions. march 2003 -003 corrected figure 2. modified section 3.8.6 and section 3.12.2.36. updated table 74. recreated figures 14, 15, 16, 17, 27, 28 and 29. december 2002 -002 in section 2, added ?serial eeprom interface? sub-section. updated section 1.1, ?reference documents.? updated table 30, ?sata unit pci configuration space registers?, to include spicmdr, spicntr, spistatr, and spidatr. october 2002 -001 initial release of this document.
developer?s manual april 2004 15 intel ? 31244 pci-x to serial ata controller about this document about this document 1 1.1 reference documents table 1. reference documents documentation document number/source intel? 31244 pci-x to serial ata controller datasheet 273595 intel? 31244 pci-x to serial ata controller design guide 273651 intel? 31244 pci-x to serial ata controller red canyon crb manual 273801 atmel* serial memory specification at25f512/at25f1024 http://www.atmel.fi/atmel/acrobat/ doc1440.pdf at attachment with packet interface-6 (ata/atapi-6) specification , ansi/incits #361-2002 http://www.techstreet.com/cgi-bin /detail?product_id=932242 serial ata specification http://www.serialata.org serial ata ii: extensions to serial ata 1.0 specification http://www.serialata.org/collateral /index.shtml pci local bus specification, revision 2.2 http://www.pcisig.com pci-x addendum to the pci local bus specification, revision 1.0a http://www.pcisig.com pci bus power management interface specification, revision 1.1 http://www.pcisig.com pci ide specification, revision 1.0 http://www.bswd.com/pciide.pdf stmicroelectronics* m25p10 serial flash memory http://us.st.com/stonline/books/pd f/docs/7022.pdf
16 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller about this document 1.2 terminology and conventions 1.2.1 representing numbers all numbers in this document may be assumed to be base10, unless designated otherwise. in text, numbers in base16 are represented as ?nnnh?, where the ?h? signifies hexadecimal. in pseudo code descriptions, hexadecimal numbers are represented in the form 0x1234 abcd. binary numbers are not explicitly identified, but are assumed when bit operations or bit ranges are used. 1.2.2 fields reserved : is a field that may be used by an implementation. when the initial value of a reserved field is supplied by software, this value must be zero. software should not modify reserved fields or depend on any values in reserved fields. r ead/write : may be written to a new value following initialization. this field may always be read to return the current value. r ead only : may be read to return the current value. writes to read only fields are treated as no-op operations and will not change the current value, nor result in an error condition. r ead/clear : may also be read to return the current value. a write to a read/clear field with the data value of 0 will cause no change to the field. a write to a read/clear field with a data value of 1 will cause the field to be cleared (reset to the value of 0). for example, when a read/clear field has a value of f0h, and a data value of 55h is written, the resultant field will be a0h. r ead/set : may also be read to return the current value. a write to a read/set field with the data value of 0 will cause no change to the field. a write to a read/set field with a data value of 1 will cause the field to be set (set to the value of 1). for example, when a read/set field has a value of f0h, and a data value of 55h is written, the resultant field will be f5h. w riteonce/readonly : may be written to a new value once following initialization. after the this write has occurred, the writeonce/readonly field will treat all subsequent writes as no-op operations and will not change the current value or result in an error condition. the field may always be read to return the current value.
developer?s manual april 2004 17 intel ? 31244 pci-x to serial ata controller about this document 1.2.3 specifying bit and signal values the terms set and clear in this specification refer to bit values in register and data structures. when a bit is set, its value is 1; when the bit is clear, its value is 0. likewise, setting a bit means giving it a value of 1 and clearing a bit means giving it a value of 0. the terms assert and deassert refer to the logically active or inactive value of a signal or bit, respectively. 1.2.4 signal name conventions all signal names use the pci signal name convention of using the ?#? symbol at the end of a signal name to indicate that the signal active state occurs when it is at a low voltage. the absence of the ?#? symbol indicates that the signal active state occurs when it is at a high voltage.
18 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller about this document 1.2.5 terminology to aid the discussion of the gd31244 controller architecture, the following terminology is used: table 2. terms and definitions (sheet 1 of 2) term definition bar base address register bist built-in self test cfg configure crb customer reference board differential signal signal is comprised of a positive conductor and a negative conductor. the differential signal is the voltage on the positive conductor minus the voltage on the negative conductor (i.e., tx+ ? tx-). dma direct memory access downstream at or toward a pci bus with a higher number (after configuration). dpa direct port access refers to a mode that allows more efficient access to the gd31244 registers. see also pci ide. dword 32-bit data word. hba host bus adapter host processor: processor located upstream from the gd31244 controller. inbound transactions transactions that are aimed at the gd31244 controller by an external bus master device. isi inter-symbol interference. data-dependent deterministic jitter caused by the time propagated at different rates by the transmission media. this translates into high-frequency,data-dependent, jitter. jedec provides standards for the semiconductor industry. jitter jitter is a high-frequency, semi-random displacement of a signal from its ideal location. m/s master/slave. refers to a legacy ata mode that uses the traditional methods for accessing the ata and the dma registers (see also dpa). bar base address register mr memory read mrl memory read line mrm memory read multiple msi message signalled interrupts mw memory write mwi memory write and invalidate network the trace of a pcb that completes an electrical connection between two or more components. outbound transactions transactions that are initiated by the controller to another target device. pata parallel ata pbga plastic ball grid array perr# parity error pio programmed i/o
developer?s manual april 2004 19 intel ? 31244 pci-x to serial ata controller about this document pll phase lock loop pll this block is used to synchronize an internal clocking reference so that the input high-speed data stream may be properly decoded prd physical region description prepreg material used for the lamination process of manufacturing pcbs. it consists of a layer of epoxy material that i placed between two cores. this layer melts into epoxy layer of epoxy material that i placed between two cores. this layer melts into epoxy when heated and forms around adjacent traces. qword 64-bit data word. rdid read manufacturer and product id rdsr read status register rx this is a receiver port contains the basic high-speed receiver electronics. rx + / rx - inbound high-speed differential signals connected to the serial ata cable. rxdata 10b encoding serially encoded 10b data attached to the high-speed serial differential line receiver. the 8b/10b encoding scheme transmits eight bits as a 10-bit code group. this encoding is used with gigabit ethernet, fibre channel and infiniband. sata serial ata sect sector serr# serr is the system error signal on the pci bus. spi serial peripheral interface. spi is used to access the gd31244 eeprom. stub branch from a trunk terminating at the pad of an agent. termination calibration terminate the high-speed serial cable. this block is used to synchronize an internal clocking reference so that the input high-speed data stream may be properly decoded. tx this is a transmit port that contains the basic high-speed driver electronics. tx + / tx - outbound high-speed differential signals connected to the serial ata cable. txdata serially encoded 10b data attached to the high-speed serial differential line driver. upstream at or toward a pci bus with a lower number (after configuration). wen write enable wpen write protection enable wrdi reset write enable latch wren write enable wrsr write status register table 2. terms and definitions (sheet 2 of 2) term definition
20 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller about this document this page left intentionally blank
developer?s manual april 2004 21 intel ? 31244 pci-x to serial ata controller overview overview 2 the intel ? 31244 pci-x to serial ata controller (gd31244) is a single-chip solution for a pci-x to serial ata controller. it accepts host commands through the pci-x bus, processes them and transmits them to one of four serial ata targets. the gd31244 supports serial ata speeds of 1.5 gbits/s of 8b/10b encoded data which is equivalent to 150 mbytes/s of raw data. the gd31244 derives its serial ata clocks from an internal pll with a reference clock of 37.5 mhz. on the 64-bit pci-x bus, when run at the maximum frequency of 133 mhz, the gd31244 supports a maximum burst transfer rate of 1064 mbytes/s. the gd31244 controller may be used to build standalone pci-x hba cards to interface serial ata disk drives, cd-roms, dvd roms or tape drives. the gd31244 is completely software compatible with all existing operating systems which support ata interfaces: windows*, windows nt*, linux*, solaris*, unix*, etc. in pc systems, the gd31244 may also be configured to provide additional storage capacity to systems already supporting four ata targets. in non-pc systems, the gd31244 may be used as a generic storage controller in servers, raid subsystems and network attached storage (nas) systems. the ease-of-use, flexibility, performance and low cost of the gd31244 make it an ideal choice for all of these applications. in addition to pci ide mode, the gd31244 supports a new programming interface, referred to as direct port access mode. in this new mode, the sata ports are set up to operate independently, for example no master/slave emulation is done as in pci ide mode. in this mode the sata ports registers are memory-mapped. figure 1. intel ? 31244 pci-x to serial ata controller block diagram b2843-01 oob serializer oob oob oob ad[63:0] sd0 sd1 sclk tx0p cbe#[7:0] par par64 frame# trdy# irdy# stop# devsel# req64# ack64# req# perr# serr# inta# gnt# scs# tx0n clk rst# idsel pci-x interface fifo and dma engine eeprom transaction manager serial ata transport/ link layer fifo and dma engine serial ata transport/ link layer fifo and dma engine serial ata transport/ link layer fifo and dma engine serial ata transport/ link layer deserializer rx1n rx1p serializer tx1p tx1n deserializer rx1n rx1p serializer tx2p tx2n deserializer rx2n rx2p serializer tx3p tx3n deserializer rx3n rx3p phy interface
22 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller overview 2.1 features  four sata ports at 1.5 gbits/s  compliant with serial ata: high speed serialized at attachment specification, revision 1.0e  64-bit/133mhz pci-x bus. backwards compatible to pci 32-bit/33 mhz and 64-bit/66 mhz  supports native pci ide  hot-plug drives  supports master/slave mode for compatibility with existing operating systems  supports sata direct port access  independent dma masters for each sata port  3.3v and 2.5v supply, 2w maximum 2.2 pci-x interface the 64-bit, 133 mhz pci-x interface is fully compliant with the pci local bus specification , revision 2.2 and the pci-x addendum to the local bus specification , revision 1.0. the pci-x bus supports up to 1064 mbytes/s transfer rate of burst data. the gd31244 is backwards compatible with 32-bit/33 mhz, 32-bit/66 mhz and 64-bit/66 mhz operation. the gd31244 contains internal registers and support circuitry to implement complete plug-n-play functionality, which allows hardware and firmware to resolve all setup conflicts for the user. the gd31244 supports both slave and master data transfers. during system initialization, the host system configuration manager reads the configuration space of each pci-x device. after hardware reset, the gd31244 only responds to pci-x configuration cycles in anticipation of being initialized by the configuration manager. each pci-x device is addressable individually by the use of unique idsel signals which, when asserted, indicate that a configuration read or write is occurring to this device. the configuration manager reads the setup registers of each device on the pci-x bus and then, based on this information, assigns system resources to each supported function through type 0 configuration reads and writes. type 1 configuration cycles are ignored. this scheme allows the gd31244 to be relocated in the memory and i/o space. interrupts, dma channels and other system resources may be reallocated appropriately.
developer?s manual april 2004 23 intel ? 31244 pci-x to serial ata controller overview 2.3 pci commands supported in m/s (pci ide) mode table 3. pci commands supported in pci ide mode pci command encoding pci command type pci-x command type claimed on inbound transac- tions on pci bus? generated by outbound trans- actions on pci bus? 0000 interrupt acknowledge interrupt acknowledge no no 0001 special cycle special cycle no no 0010 i/o read i/o read no no 0011 i/o write i/o write yes no 0100 reserved reserved no no 0101 reserved reserved no no 0110 memory read memory read dword ye s ye s 0111 memory write memory write yes yes 1000 reserved alias to memory read block pci-x = yes pci = no no 1001 reserved alias to memory write block pci-x = yes pci = no no 1010 configurationread configurationread yes no 1011 configuration write configuration write yes no 1100 memory read multiple split completion yes pci-x = no pci = yes 1101 dual address cycle dual address cycle yes yes 1110 memory read line memory read block ye s ye s 1111 memory write memory write block yes yes
24 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller overview 2.3.1 pci commands supported in dpa mode in dpa mode, the sata unit registers are mapped in memory space using one base address register. each port supports its own dma and each sata port device may be independently controlled. table 4 shows the pci and pci-x commands supported for both inbound and outbound transactions when in dpa mode. for inbound transactions in conventional pci, memory read transactions are disconnected-with-data on the first data phase. for example, when a memory read transaction is requesting more than one dword, the transaction is disconnected on the first dword. the gd31244 controller aliases memory read line (mrl) and memory read multiple (mrm) to memory read. memory write (mw) is also disconnected-with-data on the first data phase. for example, only the first dword is claimed and then the transaction is disconnected. the gd31244 controller aliases memory write and invalidate (mwi) to memory write. in pci-x mode, memory read block and memory write block are single-phase-disconnected. table 4. pci commands supported in dpa mode pci command encoding pci command type pci-x command type claimed on inbound transac- tions on pci bus? generated by outbound trans- actions on pci bus? 0000 interrupt acknowledge interrupt acknowledge no no 0001 special cycle special cycle no no 0010 i/o read i/o read no no 0011 i/o write i/o write no no 0100 reserved reserved no no 0101 reserved reserved no no 0110 memory read memory read dword yes ye s 0111 memory write memory write yes yes 1000 reserved alias to memory read block pci-x = yes pci = no no 1001 reserved alias to memory write block pci-x = yes pci = no no 1010 configurationread configurationread yes no 1011 configuration write configuration write yes no 1100 memory read multiple split completion yes pci-x = no pci = yes 1101 dual address cycle dual address cycle yes yes 1110 memory read line memory read block yes ye s 1111 memory write invalidate memory write block yes yes
developer?s manual april 2004 25 intel ? 31244 pci-x to serial ata controller overview 2.4 serial ata interface four 1.5 gbits/s serial ata ports are located on the gd31244, to support point-to-point connectivity to:  disk drives  cd roms  dvd roms  any other serial ata target device each port is compliant with the serial ata specification . high-speed differential-duplex serial lines send 8b/10b encoded data to and from the gd31244 and the target at a maximum raw data rate of 1.2 gbits/s (150 mbytes/s). copies of the target task file registers are maintained on the gd31244 and transferred as needed to the target. the serial ata protocol is software compatible with all existing operating systems that support ata devices. however, performance and reliability are improved, since all data is crc checked. the gd31244 may be configured in a high-performance mode where each sata port is addressed individually, eliminating the performance bottlenecks of master/slave configurations. this mode is called ?direct port access (dpa)? and requires enhanced software and drivers. the ms_da input selects between master/slave mode (when high) and dpa mode (when low). the sata interface on the gd31244 supports four independent sata ports, but may also be set up to emulate ide master/slave (m/s or pci ide mode). ide m/s emulation is included primarily for debugging purposes. four 1.5 gb/s serial ata ports are located on the gd31244 to support point-to-point connectivity to disk drives, cd roms, dvd roms or any other serial ata target device. each port is compliant with the ?serial ata / high speed serialized at attachment? specification, rev. 1.0, august 29, 2001. high speed differential duplex serial lines send 8b/10b encoded data to and from the gd31244 and the target at a maximum data rate of 1.5 gb/s (150 mb/s). copies of the targets? task file registers are maintained on the gd31244 and transferred as needed to the target. the gd31244 in m/s mode is software compatible with all existing operating systems that support ata devices; however, performance and reliability are improved since all data is crc checked.
26 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller overview as shown in figure 2 , the sata unit implements four sata ports. each sata port connects point-to-point to a sata device such as a hard drive device using a four-wire serial link. each sata port supports the following features:  1 kb transmit/receive fifo  dma engine with scatter/gather capability  the sata unit supports two operating modes: ? pci ide (m/s) mode ? direct port access mode in m/s mode, sata ports 1 and 2are used to emulate master/slave (m/s) operation for the primary ide channel. similarly, sata ports 3 and 4 are used to emulate m/s operation for the secondary ide channel. these ports are mapped in i/o space/ in direct port access mode, each sata port operates independently and all four sata ports are memory-mapped contiguously using one base address register. the gd31244 controller allows pci masters on the pci bus to initiate transactions to the sata unit ports and allows the sata port dmas to initiate transactions to the pci bus. in m/s mode, the sata unit registers are mapped in the i/o space. two channels (primary and secondary) are supported on the gd31244 controller. each channel consists of four register blocks:  command  control  dma  sata superset pci base address register 0 points to the primary channel command block, base address register 1points to the primary channel control block, base address register 2 points to the secondary channel command block, base address register 3 points to the secondary channel control block, base address register 4 points to both of the channel dma register, and base address register 5 defines the base i/o address for the sata superset registers. each channel supports its own dma controller. the dma moves data between memory and a device on the channel. there are two devices per channel for master/slave emulation. table 3 shows the pci and pci-x commands supported for both inbound and outbound transactions when in m/s mode. figure 2. serial ata unit block diagram disk 2 disk 4 disk 1 disk 3 port 1 port 4 port 3 port 2 pci-x bus serial ata unit
developer?s manual april 2004 27 intel ? 31244 pci-x to serial ata controller overview 2.5 modes of operation the programming interface for the gd31244 has 2 modes of operation: master/slave (m/s or pci ide) mode and direct port access (dpa) mode. 2.5.1 master/slave mode (or pci ide mode) master/slave (m/s) mode implements a pci-native mode standard ata controller with primary and secondary channels, each supporting a master and a slave mass storage device (4 sata devices in total). m/s mode places the task file in different segments of i/o space and differentiates within each space between primary and secondary channels. base address register 5 (bar5) provides access to the sata extended register set in i/o space. 2.5.2 direct port access mode direct port access (dpa) mode is a new mass storage sub-class that extends the standard task file interface to include expandable numbers of ports and advanced dma capabilities. standard pci ata controllers share the task file interface between the master and slave device, eliminating the ability to support simultaneous access between a master/slave pair. dpa allows the gd31244 to support unique task file interfaces between multiple sata ports. dpa eliminates the parallel ata master/slave protocol requirements. dpa access is geared for applications where high data bandwidth and performance are primary requirements. this mode allows for simultaneous access to each sata port for true overlapped i/o capability. table 5 provides the primary features of the dpa mode interface. while utilizing dpa mode to accomplish an overlapped and independent i/o capability, the block, control block, dma and sata superset registers for each sata port are available at all times. dma context is unique to each port, allowing independent and simultaneous transfers between the host and each of the sata ports. table 5. dpa mode interface features features description pci up to 66 mhz or pci-x up to 133 mhz required for bandwidth. independent port operation each sata port can be controlled independently. each port?s registers are available at all time. this includes dma registers. one dma channel per sata port by having each sata port support a dma channel data to be transferred between device and memory independently of other devices. the dma context can also be maintained. enhanced interrupt reporting to report serial ata specific events: serror bits, first party dma receipt.
28 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller overview 2.5.3 selecting dpa or m/s mode the gd31244 uses mode pin ms_da to place the device in master/slave mode (when high) or dpa mode (when low). this determination is made at power up so i/o and memory can be configured correctly. since a dynamic change in configuration memory and i/o mapping is not allowed, any mode change requires a power-on reset of the chip. as such, software control of this mode selection is not provided. the programming interface determines if the gd31244 is in m/s mode or dpa mode by reading by reading the pci base class and the subclass values defined herein. the subclass value for the dpa mode has been assigned by the pci sig and is 06h. pci/x bus operation is programmed through the configuration register set. this includes the required pci register set and user-defined registers that configure split transaction behavior, message signaled interrupts and other advanced features. mass storage devices are controlled through registers accessed via the bar interface. registers are divided into functional sets. these are the task file, bus master and extended register sets. depending on the mode, these sets may appear at different addresses, have different bus widths or be extended to provide additional features. see the required m/s or dpa mode section as appropriate for the application. dpa mode utilizes a single bar in memory space to access all register sets and organizes them by channel with an additional area for common registers. serial ata direct port access (dpa) mode is selected when the ms_da input is low. this mode provides an interface method for sata host controllers that eliminates the parallel ata m/s protocol requirements. dpa access is geared for applications where high data bandwidth and performance are primary requirements and software compatibility is not mandatory. this mode allows for simultaneous access to each sata port for true overlapped i/o capability. 2.5.4 dpa mode port initialization in dpa mode, the gd31244 powers up with the serial ata ports disabled. to enable each port, write 0 then 1 to bits 0:3 of each ports serial control register. for example, to enable port 1: read bar0 + 308h; and the read value with fffffff0h; write the result to bar0 + 308h; ?or? the result with 000 0001h; write the result to bar0 + 308h. table 6. bar register usage in m/s and dpa modes bar dpa mode m/s mode 0 32-bit device base address i/o task file primary command 1 32-bit device address extension (for 64-bit addresses) i/o task file primary control 2 reserved i/otask file secondary command 3 reserved i/o task file secondary control 4 reserved i/o bus master 5 reserved i/o superset registers
developer?s manual april 2004 29 intel ? 31244 pci-x to serial ata controller overview 2.6 serial eeprom interface in add-in card applications, firmware may be downloaded to the system from a serial eeprom or serial flash rom via the gd31244. this industry standard 4-pin interface known as spi, allows any size of device to be connected to the gd31244 up to 128 kbytes. a typical firmware device is stmicroelectronics m25p10-a. 2.7 extended voltage mode the sata voltages were designed primarily for a cable connection to the hard drives. in certain applications, such as nas/san enclosures, the hard disk drives (hdd) are connected to a backplane, not a cable (typically in desktop systems). due to the frequency of the sata interface, the backplane creates a significant attenuation of the sata signals. in an effort to simplify system designs, the gd31244 offers an extended voltage range to help alleviate this issue. this extended voltage range allows standard sata hdd to be used with sata backplanes. the firmware may be place into the external voltage mode by setting bit 14 in phy configuration register address 140h to 1. this forces the firmware to operate with this extended voltage range. table 7. normal voltage mode parameter description minimum maximum units out tx output differential peak-to-peak voltage swing 400 600 mvp-p in rx input differential peak-to-peak voltage swing 325 600 mvp-p table 8. extended voltage mode parameter description minimum maximum units out tx output differential peak-to-peak voltage swing 800 2000 mvp-p in rx input differential peak-to-peak voltage swing 175 2000
30 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller overview 2.8 a ctivity led s serial ata interfaces on disk drives do not includ e the traditional ata output which drives an led to indicate that the drive is active. the gd31244 compensates for this missing function by adding four led outputs which sink 10 ma. in master/slave compatibility mode, led0 goes low to turn on an activity led anytime there is activity on either port 1 or port 2. likewise, led1 goes low to turn on an activity led anytime there is activity on either port 3 or port 4. these two outputs may be wire ?or?d? together to use one led for all four por ts. if the gd31244 is configured in direct port access mode (ms_da is low), then each port is assigned its own led as follows: port 1 on led0, port 2 on led1, port 3 on sclk and port 4 on sdo. during eeprom transfers, the led function on sclk and sdo is suspended. a buffer may be required if the leds are located off-board and an eeprom is used. through programmable registers, the gd31244 may be set up so that led0 internally combines the status of all four ports for single led use. figure 3. common led and serial eeprom options
developer?s manual april 2004 31 intel ? 31244 pci-x to serial ata controller overview 2.8.1 reference clock generation a 37.5 mhz reference clock with a +/- 100 ppm accuracy is required for proper operation of the gd31244. this can be generated from an external oscillator connected directly to the xi input. optionally, a 37.5 mhz crystal may be connected between the xi and xo pins with a 20 pf capacitor from xi to ground and another from xo to ground. the crystal should have the following characteristics:  frequency: 37.5 mhz +/- 100 ppm  mode: fundamental  type: ?parallel? resonant  esr: 30 ohms maximum  load capacitance: 20 pf  shunt capacitance: 7 pf  drive level:500 mw maximum recommended vendor/part number: fox electronics, part number: 278-37.5-8 (this is an hc-49sd surface mountable package.) the crystal should be placed near the gd31244 and isolated from noisy circuits as much as possible. 2.9 high-end storage features the gd31244 is well suited for high-end storage applications using serial ata drives. the serial ata direct port access mode described above allows the host cpu to initiate overlapping operations to all four drives. another feature is a ?wide-swing mode? on the four transmitter outputs which provides approximately double the amplitude of normal operation. this increase differential voltage swing is useful in connecting to serial ata devices over backplanes or between systems. 2.10 jtag interface an ieee 1149.1 compatible jtag interface and boundary scan functionality is provided to assist onboard testing of the device.gd31244
32 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller serial eeprom serial eeprom 3 the gd31244 is software compatible with all existing operating systems which support parallel ata devices. however, the additional functions offered by the gd31244 require os-specific code to take advantage of these beneficial functions. the code for initializing the system and booting drives will normally be located within the bios of the host system or with an expansion rom on the host bus adapter card. a serial eeprom may be optionally connected to the gd31244 to store this code which will be downloaded and executed by the host system during initialization. applications not requiring a downloadable program do not require the serial eeprom. the program should be downloaded into system ram and executed there. execution from the eeprom should not be attempted. details on expansion rom operation and initialization may be found in the pci 2.2 specification, section 6.3. the intel gd31244 contains a four pin, serial peripheral interface (spi) to connect to an optional serial eeprom to store a downloadable program. at power-up, the gd31244 hardware automatically detects whether the eeprom is present and indicates to this status to the host system during initialization. this spi interface was designed for compatibility with an st microelectronics* m25p10-a or atmel* at25f1024 device with 131,072 bytes of memory or an equivalent device. for the purposes of understanding serial eeprom operation, refer to the datasheet for the st microelectronics documents, m25p10-a (dated february 2002) and application note (an-1511 ensuring compatibility between m25p10 to m25p10-a and m25p05 to m25p05-a in your application, dated february 2002) and the datasheet for the atmel at25f1024 (revision 1440g, dated february, 2002). the basic connection is shown in figure 4 . figure 4. serial eeprom interface b1396-00 1 serial eeprom sdo sdi scs# sclk si so cs# sck wp# hold# user selectable high gd31244
developer?s manual april 2004 33 intel ? 31244 pci-x to serial ata controller serial eeprom note: the sdi, sdo and sclk pins have multiple functions an may require additional functionality as presented in table 9 . wp# is not documented here. refer to the vendors? datasheet. the gd31244 is a master spi device which outputs three signals (scs#, sclk and sdo) and inputs one signal (sdi). only one external device is supported. the sclk is derived from the pci/pci-x bus clk signal as presented in table 10 . the gd31244 behaves as if the spi modes are cpol=0 and cpha=0. the serial eeprom implements the nine commands presented in table 11 . these commands are supported through the gd31244, either through the pci configuration space (offsets 90h and 94h) or the memory interface. table 9. serial eeprom interface pins name description sdi input - lvttl with pull up: connects to the serial data output (so) of the serial eeprom. data is shifted out of the eeprom on the falling edge of sclk. customers are recommended to add pads for both a pull-up and a pull-down resistor for possible use in the future. sdo output - lvttl: connects to the serial data input (si) of the serial eeprom. data is latched into the serial eeprom on the rising edge of sclk. this is also the activity output for channel 3 when all four leds are activated (active low). sclk output - lvttl: connects to the clock input (sck) of the serial eeprom. this is also the activity led output for channel 2 when all four leds are activated (active low). scs# output - lvttl with pull up: connects to the chip select input (cs#) of the serial eeprom. table 10. sclk frequency pci-x speed sclk period divider pci 33 mhz 8.25 mhz 121 nsec 4 pci-x 66 mhz 16.5 mhz 60.6 nsec 4 pci-x 100 mhz 12.5 mhz 80 nsec 8 pci-x 133 mhz 16.625 mhz 60.2 nsec 8 table 11. serial eeprom commands command name op_code access operation wrsr 01h - 0000 0001 pci config write status register program 02h - 0000 0010 memory program data into memory array read 03h - 0000 0011 memory read data from memory array wrdi 04h - 0000 0100 pci config reset write enable latch rdsr 05h - 0000 0101 pci config read status register wren 06h - 0000 0110 pci config set write enable latch rdid 15h - 0001 0101 pci config read manufacturer and product id sector erase 52h - 0101 0010 pci config erase one sector in memory array chip erase 62h - 0110 0010 pci config erase the entire memory array
34 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller serial eeprom 3.1 write status register (wrsr) command the wrsr command allows the user to control three bits within the eeprom status register relating to write protection: wpen, bp1 and bp0. the eeprom is divided into four sectors that may be selectively write protected sectors where the top quarter (1/4), top half (1/2), or all of the memory sectors may be protected (locked out) from write. the at25f512 is divided into two sectors where all of the memory sectors may be protected (locked out) from write. any of the locked-out sec-tors will therefore be read only. the locked-out sector and the corresponding status register control bits are presented in table 12 . the three bits, bp0, bp1, and wpen, are nonvolatile cells that have the same proper-ties and functions as the regular memory cells (e.g., wren, t wc, rdsr). the wrsr command also allows the user to enable or disable the write protect (wp) pin through the use of the write protect enable (wpen) bit. hardware write protection is enabled when the wp pin is low and the wpen bit is 1. hardware write protection is disabled when either the wp pin is high or the wpen bit is 0. when the device is hard-ware write protected, writes to the status register, including the block protect bits and the wpen bit, and the locked-out sectors in the memory array are disabled. write is only allowed to sectors of the memory which are not locked out. the wrsr command is self-timed to automatically erase and program bp0, bp1, and wpen bits. in order to write the status register, the device must first be write enabled through the wren command. then, the command and data for the three bits are entered. during the internal write cycle, all commands will be ignored except rdsr commands. the at25f512/1024 will automatically return to write disable state at the completion of the wrsr cycle. the wrsr operation is shown in figure 5 . note: when the wpen bit is hardware write protected, it cannot be changed back to 0, as long as the wp pin is held low. table 12. block write protect bits level status bit registers at25f512 at25f1024 bp1 bp0 array addresses locked out locked-out sectors array addresses locked out locked-out sectors 00 0 none none none none 1 (1/4) 0 1 018000 - 01ffff sector 4 2 (1/2) 1 0 010000 - 01ffff sector 3, 4 3 (all) 1 1 000000 - 00ffff all sectors (1-2) 000000 - 01ffff all sectors (1-4) figure 5. write status register (wrsr) operation scs# sclk sdo sdi 01234567 8 9 10 11 12 13 14 15 hi -z 1 00 0000 0 76543210 wpen reserved- write as 0 reserved- write as 0 reserved-write as 0 rdy# - write as 0 wen - write as 0 bp0 - block write protect bit 0 bp1 - block write protect bit 1
developer?s manual april 2004 35 intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.1 program command in order to program the eeprom, two separate commands must be executed. prior to each program command, the device must be write enabled through the wren command. the program command may then be executed. also, the address of the memory location(s) to be programmed must be outside the protected address field location selected by the block write protection level. during an internal self-timed programming cycle, all commands will be ignored except the rdsr command. the ready bit (bit 0) in the status register of the eeprom may be determined by initiating a rdsr command. when high, the program cycle is still in progress. when low, the program cycle has ended. only the rdsr command is enabled during the program cycle. single program command programs 1, 2 or 4 consecutive bytes within a page if it is not write protected. the starting byte should be word aligned if 16-bit and dword aligned if 32-bit. the data of all other bytes on the same page will remain unchanged. the same byte cannot be reprogrammed without erasing the whole sector first. the eeprom will automatically return to the write disable state at the completion of the program cycle. the write memory (program) operation for four bytes is shown in figure 6 . note: when the device is not write enabled with a wren command, the device will ignore the program command and will return to the standby state, when scs# is brought high. a new scs# falling edge is required to re-initiate the serial communication. to issue a program command: 1. issue a wren command as described elsewhere. 2. issue a rdsr command to read that the rdy# bit is low and the wen bit is high in the eeprom?s status register to ensure that the eeprom is ready to receive a write command. 3. when rdy# is not low, continue issuing rdsr commands until rdy# becomes low. 4. issue a program command by and 8-bit, 16-bit or 32-bit write to the rom address. figure 6. write memory (program) operation, 4 byte scs# sclk sdo 048 20 12 16 24 0 28 32 36 40 44 48 52 00000 1 1 23-bit address 7 6 5 4 3 2 1 0 byte 0 7 6 5 4 3 2 1 0 byte 1 7 6 5 4 3 2 1 0 byte 2 7 6 5 4 3 2 1 0 byte 3 54 56
36 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.2 read command the eeprom contains the downloadable programs needed in plug-in expansion card applications. normally, after the card is configured, the host system downloads the program from the eeprom to ram and executes from there. upon a rom memory read, the gd31244 initiates an eeprom read operation at the memory location addressed by the pci bus. the pci/pci-x memory address is translated into the 17-bit eeprom memory address by the gd31244. bits 23-17 of the eeprom address are set to 0. bits 16-0 of the eeprom address are identical to the address on the pci/pci-x bus. the byte enables determine how many bytes will be read from the eeprom (1, 2 or 4). the byte enables on rom memory reads is presented in table 13 . the read memory (read) operation for four bytes is shown in figure 7 . the read command may only be issued when the eeprom is ready to accept a new command. when the device is busy, it cannot accept any new commands except rdsr. to issue a read command: 1. issue a rdsr command to read that the rdy# bit is low in the eeprom?s status register to ensure that the eeprom is ready to receive a new command. 2. when rdy# is not low, continue issuing rdsr commands until rdy# becomes low. 3. issue the read command by performing a byte, word or double word read of the rom at the desired address. in pcs which are downloading the program stored in the eeprom, the rdsr commands mentioned above will not be issued prior to a read. this is acceptable during normal operation since the eeprom will not be busy at this time. when a read command is issued while the eeprom is busy, the eeprom will return data which is all zero. table 13. byte enables on rom memory reads c/be#3 c/be#2 c/be#1 c/be#0 length (bytes) eeprom a1 bit eeprom a0 bit 1110 1 0 0 1101 1 0 1 1011 1 1 0 0111 1 1 1 1100 2 0 0 0011 2 1 0 0000 4 0 0 note: the access must be word aligned if 16-bit and dword aligned if 32-bit. figure 7. read memory (read) operation, 4 byte scs# sclk sdo sdi 048 20 12 16 24 hi -z 0 28 32 36 40 44 48 52 hi -z 00000 1 1 23-bit address 7 6 5 4 3 2 1 0 byte 0 7 6 5 4 3 2 1 0 byte 1 7 6 5 4 3 2 1 0 byte 2 7 6 5 4 3 2 1 0 byte 3 54 56
developer?s manual april 2004 37 intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.3 write disable (wrdi) command to protect the device against inadvertent writes, the wrdi command disables further write commands. the wrdi command is independent of the status of the wp pin. the write disable (wrdi) operation is shown in figure 8 . the wrdi command may only be issued when the eeprom is ready to accept a new command. when the device is busy, it cannot accept any new commands except rdsr. to issue a wrdi command: 1. issue a rdsr command to read that the rdy# bit is low in the eeprom?s status register to ensure that the eeprom is ready to receive a new command. 2. when rdy# is not low, continue issuing rdsr commands until rdy# becomes low. 3. issue the wrdi command with an 8-bit write of 04h to the spi command register at offset 90h. figure 8. write disable (wrdi) operation scs# sclk sdo sdi 00000100 hi -z 01234567
38 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.4 read status register (rdsr) command the rdsr command reads the eeprom?s status register. this is the most commonly issued command since the status register must be polled in order to determine that a previously issued command is complete and the device is ready to accept a new command. the real-time ready (rdy#) and write enable (wen) status bits of the eeprom may be determined by the rdsr command. likewise, the write protect (wpen) and block protect bits (bp1 and bp0) may also be read. these three bits are non-volatile memory cells which are set using the wrsr command. during internal write cycles, all other commands will be ignored except the rdsr command. the read status (rdsr) operation is shown in figure 9 . the status register format is presented in table 14 . the rdsr command is unique in that it is always serviced by the eeprom even if a previous command has yet to complete. to issue a rdsr command: 1. issue an 8-bit write of 05h to the spi command register at offset 90h. 2. read an 8-bit value from the spi data register at offset 94h. figure 9. read status register (rdsr) operation scs# sclk sdo sdi 01234567 8 9 1011121314 00000101 76543210 hi -z hi -z wpen: write protect control bit reserved reserved reserved rdy# - ready bit wen - write enable status bp0 - block write protect bit 0 bp1 - block write protect bit 1 table 14. status register format (refer to atmel* at25f1024 datasheet) bit name description 7 wpen when high, allows override of the hardware write protect pin. 6-4 reserved these bits are low when the device is not in a write cycle. write with ?0?. 3 2 bp1 bp0 these two bits control which sectors of the chip are write protected: 00 - none 01 - sector 4 10 - sectors 3 & 4 11 - all sectors 1wen when low, the device is write protected. when high, the device is write enabled. 0 rdy# when low, the device is ready. when high, a write cycle is in progress.
developer?s manual april 2004 39 intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.5 write enable (wren) command the eeprom will power up in the write disable state. any write command (program, sect_erase and chip_erase) must therefore be preceded by the wren command. when the eeprom is currently write enabled, the wen bit in the status register will be high. the write enable (wren) operation is shown in figure 10 . the wren command may only be issued when the eeprom is ready to accept a new command. when the device is busy, it cannot accept any new commands except rdsr. to issue a wren command: 1. issue a rdsr command to read that the rdy# bit is low in the eeprom?s status register to ensure that the eeprom is ready to receive a new command. 2. when rdy# is not low, continue issuing rdsr commands until rdy# becomes low. 3. issue a wren command by an 8-bit write of 06h to the spi command register at offset 90h. figure 10. write enable (wren) operation scs# sclk sdo sdi 00000110 hi -z 01234567
40 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.6 sector erase (sect_erase) command before an eeprom byte may be reprogrammed, the sector that contains the byte must be erased. in order to erase the eeprom, two separate commands must be executed. first, the device must be write enabled through the wren command, then the sect_erase command may be executed. the sect_erase command is internally controlled; it will automatically be timed to completion. during this time, all commands will be ignored, except rdsr command. the eeprom will automatically return to the write disable state at the completion of the sect_erase cycle. the sect_erase command erases every byte in the selected sector if the sector is not write-protected. the eeprom sector address (bits 16 & 15) is determined by two bits in the spi command register at offset 91h: spi_sect_addr1 (mapped to bit 16) and spi_sect_addr0 (mapped to bit 15). these bits form the uppermost bits of the memory address and split the memory into the four sectors. address bits 23-17 are low. the sector erase (sect_erase) operation is shown in figure 11 . to issue a sect_erase command: 1. issue a wren command as described in section 3.1.5 . 2. issue a rdsr command to read that the rdy# bit is low and the wen bit is high in the eeprom?s status register to ensure that the eeprom is ready to receive a write command. 3. when rdy# is not low, continue issuing rdsr commands until rdy# becomes low. 4. issue a sect_erase command by an 8-bit write of 52h to the spi command register at offset 90h. figure 11. sector erase (sect_erase) operation scs# sclk sdo sdi 048 20 12 16 24 hi -z 0 28 32 36 40 44 48 52 hi -z 00000 1 1 23-bit address 7 6 5 4 3 2 1 0 byte 0 7 6 5 4 3 2 1 0 byte 1 7 6 5 4 3 2 1 0 byte 2 7 6 5 4 3 2 1 0 byte 3 54 56
developer?s manual april 2004 41 intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.7 chip_erase command as an alternative to the sect_erase, the chip_erase command will erase every byte in all sectors that are not write protected. first, the device must be write enabled through the wren command, then the chip erase command may be executed. the chip_erase command is internally controlled; it will automatically be timed to completion. the chip_erase cycle time typically is 3.5 seconds. during the internal erase cycle, all commands will be ignored except rdsr. the eeprom will automatically return to the write disable state at the completion of the chip_erase cycle. the chip erase (chip_erase) operation is shown in figure 12 . the chip_erase command may only be issued when the eeprom is ready to accept a new command. when the device is busy, it cannot accept any new commands except rdsr. to issue a rdid command: 1. issue a wren command as described in section 3.1.5 . 2. issue a rdsr command to read that the rdy# bit is low and the wen bit is high in the eeprom?s status register to ensure that the eeprom is ready to receive a write command. 3. when rdy# is not low, continue issuing rdsr commands until rdy# becomes low. 4. issue the chip_erase command with an 8-bit write of 62h to the spi command register at offset 90h. figure 12. chip erase (chip_erase) operation scs# sclk sdo sdi 01100010 hi -z 01234567
42 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.8 read id register (rdid) command the rdid command allows the user to read the manufacturer and product id of the eeprom. the first byte after the command will be the manufacturer code (e.g., 1fh = atmel*), followed by the device code. the read id register (rdid) operation is shown in figure 13 . the rdid command may only be issued when the eeprom is ready to accept a new command. when the device is busy, it cannot accept any new commands except rdsr. to issue a rdid command: 1. issue a rdsr command to read that the rdy# bit is low in the eeprom?s status register to ensure that the eeprom is ready to receive a new command. 2. when rdy# is not low, continue issuing rdsr commands until rdy# becomes low. 3. issue the rdid command with an 8-bit write of 15h to the spi command register at offset 90h. 4. upon completion of the rdid command, the 8-bit manufacturer?s id (1fh for atmel) will be located in bits 7:0 of the spi data register (offset 94h) and the 8-bit device id (060h for at25f1024) will be located in bits 15:8 of the spi data register (offset 94h). figure 13. read id register (rdid) operation scs# sclk sdo sdi 01234567 8 9 10 11 12 13 14 15 hi -z 00000001 manufacturer id 16 17 18 19 20 21 22 device id hi -z 7654321076543210
developer?s manual april 2004 43 intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.9 serial eeprom spi interface ? address 90h 3.1.9.1 programming details this module implements a controller for interfacing to a serial eeprom using the spi (serial peripheral interface) standard. the controller sits between a pci core's application interface and the serial device. it contains a state machine that accesses the rom 1, 2 or 4 times for each pci transaction based on the byte enables. reads and writes are done through the pci expansion port defined by cr30 in configuration space. reads from the serial device are very slow. the controller outputs a fifo write signal to the pci core upon completion of the read operation. since the fifo is empty until this time, the host read transaction will time-out and be retried by the pci chipset until the controller writes the data into the fifo. the design will fail if the host aborts retries or reorders transactions to the pci target. a burst read transaction will be slowed down into a repetition of {retry, retry, ..., retry, read 1 data phase then disconnect without data}. writes to the serial device must be performed by a special device driver that polls the device status register to determine when the write is done. the next write may then be executed. each write is composed of two operations. the host must issue a write enable command followed by a write data command of 1, 2 or 4 bytes. burst writes are not allowed. furthermore, the set of all write pairs must be proceeded by one of the two erase commands. when the host attempts to write a subsequent data value before the first completes, the pci core will complete the transaction and queue up the fifo. the queue comes into play when the pci bus write transaction period is less than the static target state machine cycle time and fifo starts to fill up. to avoid overflowing the queue and causing the host to do retries, the serial eprom write driver should not issue a subsequent write until the current one is complete. the host issues all commands except the read command through a register set in configuration space. the register set is composed of command, control and data registers. the host writes the command type to the command register after setting up the control and data registers as necessary. the controller starts when the command register is written. the host then polls the status register to determine when the command is complete. for read commands, except read, the data register will contain the result when done.
44 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller serial eeprom the rdid value is for the atmel* 25f1024 device. other devices will have different values. the legal values for the pci byte enables on read and write operations are presented in table 16 . table 15. write and read command types command type inst [7:0] ctrl [1:0] data [15:0] description write wren 06h - - write enable wrdi 04h - - write disable wrsr 01h - {xx, status [7:0]} write status program ? 02h - - write data sect_erase 52h a [16:15] - erase 1/4 chip chip_erase 62h - - erase all chip read rdsr 05h - {00h, status [7:0]} read status read ? 03h - - read data rdid 15h - 601fh read id ? the program and read commands are done through the expansion rom port of the pci device. all other commands are done through the configuration register set. table 16. pci byte enables on read and write operations byte_enables_n 3 2 1 0 count a [1:0] 1110 1 0 1101 1 1 1011 1 2 0111 1 3 1100 2 0 0011 2 2 0000 4 0
developer?s manual april 2004 45 intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.9.2 spi command / control / status register - address 90h 3.1.9.2.1 spi command 3.1.9.2.2 spi control 3.1.9.2.3 spi status table 17. spi command master / slave mode and direct port access mode bits type reset description 7:0 r/w 00h expansion rom spi interface command type. a write to this register initiates the command. the status register bit d0 must be polled to determine when the command is complete. 06h = wren (write enable) 04h = wrdi (write disable) 01h = wrsr (write status) 02h = no action (spi program command) 52h = sect_erase (sector erase) 62h = chip_erase (all sector erase) 05h = rdsr (read status) 03h = no action (spi read command) 15h = rdid (read id) others = no action ta ble 1 8. spi contr ol master / slave mode and direct port access mode bits type reset description 15:10 r/- 00h reserved. 9:8 r/w 00b sector address [1:0]. selects one of four sectors for the sector erase command 52h. table 19. spi status master / slave mode and direct port access mode bits type reset description 23:17 r/- 00h reserved. 16 r/- 0b command done. when high, this indicates that the last command has been communicated to the serial device. it does not indicate the device is ready. the rdsr command must be issued to determine this.
46 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller serial eeprom 3.1.9.3 spi data register - address 94h this is a multifunction register used by three commands. for the rdid command, it is a read-only register with the manufacturer?s id and device id in the upper and lower bytes respectively. for the wrsr/rdsr commands, the lower byte is a write/read register with the bit definitions presented in table 20 . the wpen command is not applicable if the serial eeprom device has its write protect pin wpb inactive high. refer to the serial eeprom device specification for how to use these bits. 3.1.10 detection of the eeprom at power-up immediately after power-on reset (an internal event based upon the power supply exceeding a minimum voltage), the gd31244 reads the eeprom through the spi interface to determine if an eeprom is present. table 20. spi data register - address 94h master / slave mode and direct port access mode bits type reset description 31:16 r/- 0 reserved. 15:8 r/- 00h device id for the rdid command. 7:0 r/- 00h manufacturer?s id for the rdid command. 7 6 5 4 3 2 1 0 r/w 00h wpen external wpb pin override reserved reserved reserved bp1 block protect 1 bp0 block protect 0 wen write enable rdyn ready active low
developer?s manual april 2004 47 intel ? 31244 pci-x to serial ata controller serial eeprom this page left intentionally blank
48 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller functional blocks functional blocks 4 4.1 serial ata this section describes the serial ata (sata) unit, including the operation modes and setup. throughout this section, this unit is referred to as the sata unit or su. the sata unit on 31244 supports four independent sata ports, but may also be set up to emulate ide master/slave. with parallel ata (pata), the controller and the device communicate using a 40-pin ribbon cable. the controller and device are connected through a parallel bus, which provides address, controls, and data signals. there are two register blocks on an ata device: command block registers:the command block registers are used for normal data transfer requests. control block registers: the control block registers are used for device control such as software reset, and bist. for example, the command block registers are used to issue commands to the device. the parallel interface also provides a dma interface. data may be exchanged between the controller and the device using either dma or programmed i/o (pio). refer to the at attachment with packet interface-6 (ata/atapi-6) specification. sata maintains the same programming interface. for example, the application still accesses the device with the same set of registers (command block registers and control block registers). since the link between the controller and device is now serial, the device registers are now manipulated indirectly, requiring that the controller maintains a copy of all the device registers called the shadow register block (srb). the serial bus defines a simple protocol for exchanging messages between the controller and the device. the serial protocol is transparent to the programmer. for example, the programmer does not have to be cognizant of how the serial protocol transmit and receive data. refer to the serial ata specification . information is exchanged between the controller and device over the serial bus using frame information structures (fiss). the serial ata protocol defines a set of fis:  register: bidirectional  dma activate: device-to-host  dma setup: bidirectional  bist activate: bidirectional  set device bits: device-to-host  pio setup: device-to-host  data: bidirectional
developer?s manual april 2004 49 intel ? 31244 pci-x to serial ata controller functional blocks a fis is a group of 32-bit words that may either be sent by the device or the controller. a fis is packetized, by the link layer, by inserting sof and eof fields before being sent over the serial bus by the phy layer. figure 14 shows the sata protocol layers. transport layer: this layer simply constructs fiss for transmission and decomposes received fiss. as an example, when the application layer (higher layer) wishes to access the device, it loads the appropriate value in the srb (command last). once the command is written, the transport layer converts the srb content into appropriate fiss that is passed to the link layer. the opposite happens on the device. for example, the transport layer converts the received fiss from the link layer and passes it to the higher layer. link layer: this layer simply transmits and r eceives frames. on the transmitter side, the link layer inserts frame envelope around the transport layer data. for example, the link layer inserts primitives like sof, crc, and eof around the fiss from the transport layer. the opposite happens on the receiver side. for example, the link layer extracts the primitives from the frame and passes the fiss to the transport layer. physical layer: this layer simply serialize the data from the link layer and deserialize the serial stream and passes the data to the link layer. figure 14. sata protocol layers transport layer link layer physical layer transport layer link layer physical layer device registers shadow register block host layers device layers serial bus
50 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller functional blocks 4.1.1 out-of-band signaling there are three out-of-band (oob) signals defined as part of the analog front end (afe) layer of the phy block:  comreset  cominit  comwake these oob signals are internal output from the receive afe portion of the phy and they are generated based on the detection of burst patterns of align primitives. figure 15 shows a block diagram of the afe cabling and the origin of the oob signals. comreset and cominit have the same burst characteristics except that comreset originates from the host controller whereas cominit originates from the device. comwake is different from comreset and cominit by having a different idle duration between bursts. figure 16 shows the burst patterns timings. figure 15. analog front end (afe) cabling and oob signals figure 16. oob signals timings b1398-01 comreset / cominit comwake 106.7 ns 320 ns 106.7 ns 106.7 ns
developer?s manual april 2004 51 intel ? 31244 pci-x to serial ata controller functional blocks comreset is used by the controller to achieve two things:  initialize the serial bus to establish the communication link  hardware reset the device because of the nature of the serial bus, the serial bus has to be initialized before communication between the controller and the device may occur. the controller initiates a comreset on the serial bus to begin the initialization sequence. after the initialization sequence is completed, the communication link between the controller and the device is established and normal operation may begin. comreset is also used to cause a hardware reset of the device. figure 17 shows a comreset sequence. figure 17. comreset sequence
52 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller functional blocks cominit always originates from the device. cominit is used by the device to initiate the initialization sequence of the serial bus, similar to what a comreset does. this is electrically identical to comreset except it originates from the device. after the initialization sequence is completed, the communication link between the controller and the device is established and normal operation may begin. figure 18 shows a cominit sequence. comwake may originate from either the controller or the device. comwake is used to bring the phy out of a power-down state. figure 18. cominit sequence
developer?s manual april 2004 53 intel ? 31244 pci-x to serial ata controller functional blocks 4.2 operational blocks each sata port on the gd31244 controller contains the following blocks:  serial engine  register interface  dma controller  programmed i/o (pio) interface figure 19. sata port block diagram fifo bus interface transport layer link layer phy layer device block control superset registers command dma pio block registers registers
54 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller functional blocks 4.2.1 serial engine the serial engine is transparent to the user. the serial engine consists of the three layers:  transport layer  link layer  phy layer refer to the serial ata specification for more details. 4.2.2 register interface the gd31244 may be set up to operate in one of the following modes:  pci ide mode (legacy m/s)  pci direct port access mode the register interface for each mode is described in section , ?the sata unit may be set up during system reset to execute in one of the following modes. each mode provides a different programming interface. the dpa_mode# external strap signal is sampled during the rising edge of pci reset, to determine the operation mode.? on page 62 .
developer?s manual april 2004 55 intel ? 31244 pci-x to serial ata controller functional blocks 4.2.3 dma controller several ata commands use the dma controller to transfer data. in dpa mode, each sata port on the gd31244 controller supports its own dma controller. this allows each sata port to transfer data independent of each other. in pci ide mode, each channel (two sata ports) supports one dma controller. data may be either received or transmitted to the sata device using the dma controller. the programming model provides a simple scatter/gather mechanism allowing large transfer blocks to be scattered to or gathered from memory. the dma controller accesses system memory to read dma descriptors. the dma controller uses the dma descriptor table pointer to access the descriptors. the descriptor table contains a number of descriptors which describe areas of memory that are involved in the data transfer. figure 20 shows the structure of a descriptor table. the descriptor table is prepared and placed in memory by software. the descriptor table must be dword aligned and must not cross a 64 kbyte boundary. each descriptor is 8 bytes in length. the first dword specifies the word address of the data buffer. the lower two bytes of the second dword specifies the byte count of the data buffer. a value of zero in the byte count field implies a transfer count of 64 kbytes, which is the maximum number of bytes that may be transferred per descriptor. bit 7 of the upper byte of the second dword contains an eot (end-of-transfer) bit. the eot bit indicates when the last data buffer is reached. the gd31244 controller provides additional address registers to support pci dac cycles. for example, an upper dma descriptor table pointer register and an upper dma address register are defined. these registers allow the gd31244 controller to initiate pci dac cycles. note: the descriptor table must be aligned on a dword boundary, and must not cross a 64 kbyte boundary. note: the address field (data buffer address) in the descriptor must be aligned on a word boundary. furthermore, the data block must not cross a 64 kbyte boundary. note: all the descriptors within a particular descriptor table share the same upper address register. for example, all the data buffers must be within the same 4 gbyte page. in pci ide mode, the primary channel dma registers are as follows:  ?su ide channel 0 dma command register - suicdcr0? on page 178  ?su ide channel 0 dma status register - suicdsr0? on page 179  ?su ide channel 0 dma descriptor table pointer register - suicddtpr0? on page 180 the secondary channel dma are as follows:  ?su ide channel 1 dma command register - suicdcr1? on page 181  ?su ide channel 1 dma status register - suicdsr1? on page 182  ?su ide channel 1 dma descriptor table pointer register - suicddtpr1? on page 183 . in dpa mode, the dma register are as follows:  ?su pci dpa upper dma descriptor table pointer register - supduddtpr? on page 215  ?su pci dpa upper dma data buffer pointer register - supduddpr? on page 216  ?su pci dpa dma command register - supddcmdr? on page 217  ?su pci dpa dma status register - supddsr? on page 218  ?su pci dpa dma descriptor table pointer register - supdddtpr? on page 219
56 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller functional blocks figure 20. dma descriptor table dma upper descriptor table pointer upper dma data address 1st nth dma descriptor table pointer data dma controlle r registers descriptors in memory data buffer buffer end of transfer bit set (last transfer detected) 2nd data buffer 3rd data buffer common to all descriptors byte 0 byte 1 byte 2 byte 3 0 31 dma data address byte count eot reserved dma data address byte count eot reserved dma data address byte count eot reserved dma data address byte count eot reserved 0 31 0 0 0 0 0 0 0 0
developer?s manual april 2004 57 intel ? 31244 pci-x to serial ata controller functional blocks 4.2.3.1 dma operation to initiate a dma transfer between memory and a device, the following steps are required:  software prepares a descriptor table in memory. each descriptor is 8 bytes long and consists of an address pointer to the starting address and the byte count of the data buffer to be transferred. in a given descriptor table, two consecutive descriptors are offset by 8 bytes and are aligned on a 4-byte boundary.  software provides the starting address of the descriptor table by loading the dma descriptor table pointer register of the dma controller. the direction of the data transfer is specified by setting the read/write control bit in the dma command register. clear the interrupt bit and error bit in the status register.  software loads the appropriate dma transfer command in the command block. examples of such commands are: ? read dma ?write dma the command is issued first by loading the command parameters and then writing the command register.  software engages the dma engine by writing the start bit in the dma command register.  the dma engine transfers data to/from memory responding to the sata port.  at the end of the transfer the sata port signals an interrupt  in response to the interrupt, software resets the start/stop bit in the dma command register. it then reads the dma status register and then the device status register to determine when the transfer completed successfully. when a sata port dma controller makes a request on the pci or pci-x bus and the request is retried or disconnected, the current sata port request will be re-attempted until the request is fully made. the other sata port dma will not be able to make requests on the pci or pci-x bus until the current request is either completed or gets a split response. the dma controller behaves differently in pci ide mode than in dpa mode when fetching the first dma descriptor from memory. in pci ide mode, for a dma write command, the first descriptor fetch is triggered when the first dma activate fis is received from the device. for a dma read command, the first descriptor fetch is triggered when the first data fis is received from the device. in dpa mode, the descriptor fetch is triggered when the start bit in the dma command register is set regardless of dma commands. in both pci ide and dpa modes, the initial dma data transfer is triggered under the same condition. for a dma read command (data is written to system memory), the receipt of the first data fis from the device triggers the data transfer . however, the dma controller will have to wait for adequate data to be written into the fifo, from the device, before it issues a write request to the bus master. for a dma write command (data is read from system memory), the receipt of the first dma activate fis from the device (the same fis that triggered fetching of the first descriptor) triggers the data transfer. note: during a dma transfer, when a software reset is issued by writing the srst bit in the device control register, the dma controller for that particular port will stop the transfer by clearing the active bit in the dma status register.
58 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller functional blocks 4.2.3.2 data synchronization for read dma transactions, data coming from the sata device is written by the serial engine into the fifo. the dma then reads the data from the fifo and writes it into memory. the dma and the serial engine operate independently. therefore, data may remain in the fifo well after the sata device has indicated, through a device-to-host register fis, that it has completed the read dma transaction. for example, the dma may be in the middle of flushing the fifo. the device-to-host fis contains an interrupt bit that is used to generate an interrupt. however, to ensure that all the data is transferred into memory, an interrupt is not generated until the fifo has been emptied. this means that when a register device-to-host fis is received with the ?i? bit set, and only after the fifo has been emptied, that the sata port sets the interrupt status bit (bit 2) in the dma status register and then generates an interrupt. table 21 describes the interrupt status bit and the dma active bit states after a dma transfer has been initiated. refer to section 107, ?su ide channel 0 dma status register - suicdsr0? on page 179 and section 110, ?su ide channel 1 dma status register - suicdsr1? on page 182 . pci ide note: as described in table 21 , for device read transactions the user may program the size of the physical regions to be larger than the device transfer size. however, during device write transactions the user must program the physical regions to be equal to the device transfer size. the gd31244 controller uses the dma end-of-transfer status to complete the device write transaction. table 21. interrupt /activity status combinations bit 2 (interrupt status bit) bit 0 (active bit) description 0 2 1 2 dma transfer is in progress. no interrupt has been generated by the device. 1 2 0 2 device generated an interrupt and the descriptor table has been exhausted. for example, the last descriptor has been processed. this is a normal completion where the size of the physical memory regions is equal to the device transfer size. 1 2 1 2 device generated an interrupt. the dma controller has not reached the end of the descriptor table. this is a valid completion case when the size of the physical memory regions is larger than the device transfer size. 0 2 0 2 error condition. when the dma controller error bit is 1, the dma controller encountered a problem transferring data to/from memory. specifics of the error have to be determined using bus-specific information. when the error bit is 0, the descriptor table specified a smaller transfer size than the programmed transfer size on the device.
developer?s manual april 2004 59 intel ? 31244 pci-x to serial ata controller functional blocks 4.2.3.3 dma error conditions when during a dma transfer, a bus master error condition is encountered like a master abort, target abort, or a parity error is detected, the sata port dma will stop the transfer by clearing the active bit in the dma status register and setting the error bit in the dma status register. note that the sata port does not generate an interrupt when a bus master operation is aborted. software will time out. the following is a list of bus master errors that may be encountered during dma transactions. note that not all bus master error conditions result in the dma stopping. refer to section 5.6, ?pci bus error conditions? on page 83 for more details.  outbound read request data parity errors ? immediate data transfer ? split response termination (pci-x mode)  outbound write request data parity errors ? non-msi transactions (message signaled interrupts  outbound read completion address parity error  outbound read completions attribute parity error  outbound read completion data parity errors  split completion error messages  master abort for outbound read requests  master abort for outbound write requests  target abort for outbound read requests  target abort for outbound write requests when a requested device transfer (read dma or write dma) does not complete, the software driver will eventually time out. the software driver is then responsible for clearing the start bit (bit 0) in the dma command register. note that in this case the error bit in the dma status register does not get set because there was no bus master error. an example of this type of error condition may occur when the dma descriptors specified a smaller transfer size as the programmed transfer size in the device command. this causes the dma to complete (dma active bit cleared) while leaving the interrupt bit cleared. for example, an interrupt is not generated.
60 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller functional blocks 4.2.3.4 dma throughput the pci bus efficiency is improved, by allowing large data packets to be transferred. the 31244 controller allows up to 512-byte packets per burst transfer on the pci bus. table 22 and table 23 show the pci-x bus efficiency, based on various packet sizes for read and write transactions respectively. the tables clearly indicate how, by transferring larger data packets, more bandwidth is available on the pci-x bus. in dpa mode the 31244 controller provides one dma engine per sata port. each sata port also supports a 1 kbyte fifo. each sata port dma operates independently and may transfer up to 512 bytes in one transfer. to accommodate multiple dma engines to operate concurrently, the 31244 controller employs an internal arbiter that controls the sata ports dma. the arbiter allows the dmas to post requests in a round-robin fashion, thus providing a fair algorithm to the sata ports. table 22. pci-x bus efficiency for reads read transaction size (bytes) pci-x data cycles read overhead cycles (split reads) bus efficiency available bandwidth (mb/sec) 66 mhz 100 mhz 133 mhz 64 8 11 42% 222 336 446 128 16 11 59% 311 472 627 256 32 11 74% 390 592 787 512 64 11 85% 435 680 904 1024 128 11 92% 485 736 978 table 23. pci-x bus efficiency for writes write transaction size (bytes) pci-x data cycles write overhead cycles bus efficiency available bandwidth (mb/sec) 66 mhz 100mhz 133mhz 64 8 4 66% 348 528 702 128 16 4 80% 422 640 851 256 32 4 88% 464 704 936 512 64 4 94% 496 752 1000 1024 128 4 96% 506 768 1021 figure 21. dma arbitration a9375-01 pci-x interface sata port 0 dma sata port 1 dma sata port 2 dma sata port 3 dma arb
developer?s manual april 2004 61 intel ? 31244 pci-x to serial ata controller functional blocks table 24 and table 25 provide the data transfer rate on the pci-x bus, for a various number of ports, for read and write respectively. the transfer rates are based on 512-byte packets. refer to table 22 and table 23 for pci-x bandwidth numbers. table 24 and table 25 also show two 31244 controllers operating together, thus providing a total of eight ports. the numbers in table 24 and table 25 assume large sequential access across multiple drives. table 24. read transfer rate on pci-x bus table 25. write transfer rate on pci-x bus number of ports pci-x speed (mhz) transfer rate (mb/sec) 12345678 66 140 280 420 435 435 435 435 435 100 140 280 420 560 680 680 680 680 133 140 280 420 560 700 840 904 904 note: the sata transfer rate is 140mb/s, instead of 150mb/s in order to account for bus protocol overhead . number of ports pci-x speed (mhz) transfer rate (mb/sec) 12345678 66 140 280 420 496 496 496 496 496 100 140 280 420 560 700 752 752 752 133 140 280 420 560 700 840 1000 1000 note: the sata transfer rate is 140mb/s, instead of 150mb/s in order to account for bus protocol overhead .
62 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller functional blocks 4.2.4 programmed i/o (pio) pio is an alternate way of transferring data instead of using the dma controller. data is transferred by the host processor reading or writing the data po rt register of the command block. in the ata standard, some commands may only use pio to transfer data. for example, the identify device command. during pio reads, data is read from the data port register, essentially pulling data from the head of the receive fifo, while the serial link is pushing incoming data from the serial link to the tail of the fifo. during pio writes, data is pushed into the data port register. data written to the data port register is placed at the tail of the speed matching transmit fifo. the serial link pulls data to transmit from the head of the fifo. ide devices are sector-based mass storage devices, which means that data is always transferred on sector boundaries, and therefore a sector is the smallest readable/writable unit. a sector count is specified as part of the ata command issued to the device. the minimum sector count may be equal to one. the ata standard supports the following commands for pio data transfers:  read sector  write sector  read multiple  write multiple the read sector and read multiple are used to read data from the device, whereas the write sector and write multiple are used to write data to the device. the read sector and write sector commands allow data to be transferred one sector per interrupt. for example, during a read sector command, an interrupt is generated by the device to indicate that a sector of data is ready to be read. after the sector is read, a new interrupt is generated when the next sector is ready to be transferred and this process continues until the requested sector count is exhausted. the write sector command also is used to transfer one sector per interrupt. the read multiple and write multiple commands allow multiple sector s to be transferred per interrupt instead of one sector per interrupt like the read sector and write sector commands. most ide devices support this feature and provide a programmable register on the device, which the user may program using the set features command to setup the desired number of sectors to transfer per interrupt. in both conventional pci and pci-x mode, during pio transfers the gd31244 controller will respond with a retry when data is not available in the fifo during reads or when the fifo is full during writes. the sata unit may be set up during system reset to execute in one of the following modes. each mode provides a different programming interface. the dpa_mode# external strap signal is sampled during the rising edge of pci reset, to determine the operation mode.  pci ide mode  pci direct port access mode
developer?s manual april 2004 63 intel ? 31244 pci-x to serial ata controller functional blocks 4.2.5 serial ata ii native command queuing serial ata ii command queuing enables a hard drive to accept multiple commands from the gd31244 controller and rearrange the completion order of those commands to maximize throughput. the major portion of the drive?s command service time is seek and rotational delay for the drive head to land on the appropriate data to transfer. the drive can use rotational optimizations to select the next command to complete such that the major components of the service time, seek and rotational delay, are minimized. a major advantage to command queuing is that the command issue and completion overhead may be overlapped with the drive seek and rotational delay for a different command's data transfer. for example, while a new command is being issued to the drive, the drive may be seeking to locate the appropriate track on disk for data for a different command. in essence, the latency for issuing the new command is saved since it was overlapped with the seek for another command. serial ata ii native command queuing provides an efficient and streamlined data transfer and status return mechanism. this performance and efficiency is achieved through features of the sata ii native command queuing protocol that include race-free status return mechanism, interrupt aggregation, and first party dma.
64 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller functional blocks 4.2.5.1 race-free status return mechanism serial ata ii native command queuing has a race-free status return mechanism that allows status to be returned on any command at any time. there is no handshake required with the host for the status return. the drive may issue command completions for multiple commands back-to-back or even at the same time. the serial ata ii native queuing definition utilizes the reserved 32-bit field in the set device bits fis to convey the pending status for each of up to 32 outstanding commands. the bsy bit in the status register conveys only the device?s readiness to receive another command, and does not convey the completion status of queued commands. the 32 reserved bits in the set device bits fis are handled as a 32-element array of active command bits (referred to as act bits), one for each possible outstanding command, and the array is bit significant such that bit ?n? in the array corresponds to the pending status of the command with tag ?n.? the sactive register is used to track completion status of queued commands. this register is part of the control, status and error superset registers defined in the serial ata specification. in gd31244 this register is known as the set device bits fis register supdsdbr. before host driver software issues a queued command to the device, it sets the bit corresponding to the tag of the queued command it is about to issue. when the device completes a queued command, it clears the bit corresponding to the tag of the queued command in the sactive bits in the set device bits fis. when the gd31244 receives the set device bits fis from the device it will automatically clears the bit corresponding to the tag of the queued command in the set device bits fis register supdsdbr (sactive register). host driver software queries the sactive register to determine which commands are complete. this mechanism of the host controller setting bits in the register and the device clearing bits in the register ensures that no race condition can occur. these examples describe how the bit field relates to the status of queued commands:  1 in bit location 0 signifies that the command with tag 0 is still pending  1 in bit location 16 signifies that the command with tag 16 is still pending  0 in bit location 16 signifies that the command with tag 16 is complete (if the bit was previously set) 4.2.5.2 interrupt aggregation serial ata ii native command queuing has a maximum of one interrupt per command. in actuality, the number of interrupts per command is less than one due to a feature called interrupt aggregation. if the drive completes multiple commands in a short time span, the individual interrupts for each command may be aggregated into one interrupt by the gd31244. in this case, the host software driver only sees one interrupt for multiple commands. in a highly queued workload this is a frequent occurrence since host software interrupt service latency may be long in comparison to the time between command completions.
developer?s manual april 2004 65 intel ? 31244 pci-x to serial ata controller functional blocks 4.2.5.3 first party dma (fpdma) serial ata ii native command queuing has a mechanism such that the drive can select the dma context for a subsequent data transfer without host software intervention using the gd31244. this mechanism is called first party dma. the drive selects the dma context by sending a dma setup fis to the host controller specifying the tag of the command that the data transfer is for. the host controller will load the scatter/gather table pointer for that command (based on the tag value) into the dma engine. then the dma transfer may proceed. the serial ata ii native queuing definition utilizes the reserved 32-bit field in the set device bits fis to convey the pending status for each of up to 32 outstanding commands. the bsy bit in the status register conveys only the device?s readiness to receive another command, and does not convey the completion status of queued commands. the 32 reserved bits in the set device bits fis are handled as a 32-element array of active command bits (referred to as act bits), one for each possible outstanding command, and the array is bit significant such that bit ?n? in the array corresponds to the pending status of the command with tag ?n.? data returned by the device (or transferred to the device) for queued commands use the first party dma mechanism to cause the host controller to select the appropriate destination/source memory buffer for the transfer. the memory handle used for the buffer selection is the same as the tag that is associated with the command. for traditional desktop host controllers, the handle may be used to index into a vector of pointers to pre-constructed scatter/gather lists (often referred to as physical region descriptor tables or simply prd tables) in order to establish the proper context in the host?s dma engine. status is returned by updating the 32-element bit array in the set device bits fis for successful completions. for failed commands, the device halts processing commands allowing host software or controller firmware to intervene and resolve the source of the failure before processing is again explicitly restarted. for more information on native command queueing, see serial ata ii: extensions to serial ata 1.0
66 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface programming interface 5 the gd31244 register set is composed of several functional groups, some of which appear at different addresses and in different spaces (configuration, i/o, memory) when used in pci ide mode or dpa mode. pci ide mode is a legacy mode that uses i/o space for backwards compatibility while dpa mode is a new design using memory space. in pci ide mode, pci ata specifications use 5 of the 6 available bar windows for task file and dma registers. the superset registers use the last bar (bar5). all other registers use configuration space. besides the required pci configuration register set, these include:  the pci/pci-x core configuration  the serial expansion rom registers  the common port registers  assorted control registers in dpa mode, all the (i/o space) registers to which the 6 bar registers point are consolidated into a single contiguous (memory space) set of registers to which bar0/1 points. in addition, several of the common port registers are moved from the pci configuration space to the bar0/1 defined space. as defined in the pci local bus specification, bar0/1 are used to allow for a 64-bit memory address with bar0 being the low order 32 bits and bar1 being the high order 32 bits of the address. the gd31244 uses mode pin ms_da to place the device in master/slave mode (when high) or dpa mode (when low). this determination is made at power up so i/o and memory can be configured correctly.
developer?s manual april 2004 67 intel ? 31244 pci-x to serial ata controller programming interface 5.1 pci ide mode the sata unit supports both native-pci ide modes. in this mode, the gd31244 conforms to the pci ide specification - revision 1.0 . in pci ide mode, the following registers are available to the user and are mapped in the i/o space.  command block registers  control block registers  dma registers 5.1.1 native-pci mode in native-pci ide mode, the command block registers and control block registers are completely relocatable in the i/o space using the pci base address registers, section 5.10.2.11, ?su base address register 0 - subar0? on page 119 , section 5.10.2.12, ?su base address register 1 - subar1? on page 120 , section 5.10.2.13, ?su base address register 2 - subar2? on page 121 , and section 5.10.2.14, ?su base address register 3 - subar3? on page 122 . table 26 shows the base address registers and how they are used. table 26. sata port register mapping in native pci ide mode configuration space bar offset registers 10h primary channel command block 14h primary channel control block 18h secondary channel command block 1ch secondary channel control block 20h primary and secondary channel dma registers 24h sata superset registers
68 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface figure 22 shows how the sata port registers are mapped in native-pci ide mode. note that the dma controller registers for both channels are accessed using the base address register at offset 20h. figure 22. sata unit register mapping in native-pci mode dma registers command block registers control bock registers channel 0 channel 1 channel 0 & channel 1 base address register 0 base address register 1 base address register 2 base address register 3 base address register 4 base address register 5 pci configuration space 10h 14h 18h 1ch 20h offset 24h command block registers control bock registers sata superset registers
developer?s manual april 2004 69 intel ? 31244 pci-x to serial ata controller programming interface 5.2 direct port access mode this mode is specific to the 31244, it allows an external pci master to control each sata port independently. all four sata port registers within the serial ata unit are mapped contiguously in the pci memory space using the pci base address registers, section 5.10.7.1, ?su pci dpa base address register 0 - supdbar0? on page 192 and section 5.10.7.2, ?su pci dpa upper base address register 0 - supdubar0? on page 193 . each sata port register occupies 512 bytes of space. figure 23 shows the sata ports to base address register mapping. all the four sata port registers within a serial ata unit occupy 4 kbytes of space. there is a common set of registers that are shared by all the sata ports. each sata port consists of the following register blocks. the sata ports registers are offset at 200h, 400h, 600h, and 800h for sata port 0, 1, 2, and 3 respectively. the command port register space starts at offset 000h.  common sata port registers - shared by all sata ports  command block registers  control block registers  dma registers  superset registers figure 23. sata unit register mapping in direct port access mode sata port 0 registers 0 200h 3ffh 400h 5ffh 600h 7ffh 800h sata port 3 registers 9ffh sata port 1 registers offset sata port 2 registers common port registers 1ffh 2 kbytes 512 bytes (4 x 512 bytes) pci configuration space 10h 14h offset base address register upper base address register 0 31 000h a00h fffh 1536 bytes reserved
70 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.2.1 common serial ata port registers this section defines the registers that are common to all the serial ata ports for the sata unit. figure 24 shows the registers mapping. 5.2.2 command block registers the command block registers are used to issue ata commands to the device. the command register must be written after the other registers in the command block are loaded, because the rest of the registers are parameters based on the command. the structure of the command block is shown in figure 25 . the command block registers are memory-mapped when in the direct port access mode. when in the pci ide mode, the command block registers are i/o-mapped in the pci i/o space. figure 25 shows the command block registers mapping when in the direct port access mode (dpa) for sata port 0. refer to section , ?the sata unit may be set up during system reset to execute in one of the following modes. each mode provides a different programming interface. the dpa_mode# external strap signal is sampled during the rising edge of pci reset, to determine the operation mode.? on page 62 for further details on the mapping of these registers. figure 24. common serial ata port registers 0 31 offset 008h - 1ffh reserved 004h serial ata unit interrupt pending register 000h serial ata unit interrupt mask register figure 25. command block registers for sata port 0 cylinder low register sector count register device/head register cylinder high register sector number register 204h 200h 208h 20ch 210h 214h 218h 21ch 0 31 command/status register offset features/error register data port register
developer?s manual april 2004 71 intel ? 31244 pci-x to serial ata controller programming interface 5.2.3 control block registers the control block registers provide control and status of the device. figure 26 shows the control block register mapping. refer to section , ?the sata unit may be set up during system reset to execute in one of the following modes. each mode provides a different programming interface. the dpa_mode# external strap signal is sampled during the rising edge of pci reset, to determine the operation mode.? on page 62 for further details on the mapping when in the direct port access mode (dpa) of the registers for sata port 0. 5.2.4 dma controller registers the dma controller registers provide control and status for the dma controller. several ata commands use the dma controller to transfer data between device and memory. figure 27 shows the dma controller register mapping when in the direct port access mode (dpa) for sata port 0. refer to section , ?the sata unit may be set up during system reset to execute in one of the following modes. each mode provides a different programming interface. the dpa_mode# external strap signal is sampled during the rising edge of pci reset, to determine the operation mode.? on page 62 for further details on the mapping of the registers. figure 26. control block registers for sata port 0 224h 220h 22ch 0 31 offset reserved reserved reserved 228h device control/alternate status registers figure 27. dma controller registers for sata port 0 0 31 offset dma command/status registers dma descriptor table pointer 270h 274h dma control register 260h dma upper descriptor table pointer 264h dma upper data buffer pointer 268h reserved 26ch - 26fh
72 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.2.5 sata superset registers the sata superset registers, define two sets of registers. these registers are specific to the serial ata specification , hence superset. the serial ata specification defines an additional block of registers mapped separately and independently from the ata command block registers for additional status and error information and allow control of capabilities unique to serial ata. these registers referred to as the serial ata status and control registers (scrs) are organized as 16 contiguous 32-bit registers. the current specification defines three registers only, and the remaining thirteen are reserved for future implementation. the defined scrs are as follows:  sstatus register  serror register  scontrol register the serial ata protocol also provides additional sata specific commands. the serial ata defines two frame information structures (fis) that are not used by the current ata command set. however, these fiss may be used to enable new device capabilities.  bist activate (bidirectional)  dma setup - device to host or host to device (bidirectional) table 27 shows the sata interface registers mapping when in the direct port access mode for sata port 0. refer to section , ?the sata unit may be set up during system reset to execute in one of the following modes. each mode provides a different programming interface. the dpa_mode# external strap signal is sampled during the rising edge of pci reset, to determine the operation mode.? on page 62 for further details on the mapping of the registers based on the specific programming interface. when in pci ide mode, the super registers of a device on a given channel are selected using the dev bit of the device/head register (bit 4). a channel (primary or secondary) is selected using bit 16 of the apt control register. refer to section 5.10.3.8, ?su ide device/head register - suidr? on page 173 and section 5.10.2.30, ?su extended control and status register 0 - suecsr0? on page 138 . also, when in pci ide mode, the superset registers are accessed using base address register 5. refer to section 5.10.2.16, ?su base address register 5 - subar5? on page 124 . note: the superset registers when in pci ide mode are accessed using subar5 starting at offset 000h. for example, table 27 shows the first register starting at offset 300h, 304h, 308h and so on in dpa mode. in pci ide mode, the registers start at offset 00h, 004h, 008h and so on.
developer?s manual april 2004 73 intel ? 31244 pci-x to serial ata controller programming interface table 27. sata superset registers for sata port 0 in dpa mode 31 0offset scrs registers su pci dpa sata sstatus register - supdsssr 300h su pci dpa sata serror register - supdsser 304h su pci dpa sata scontrol register - supdsscr 308h su pci dpa set device bits register - supdsdbr 30ch reserved 310h - 33fh su pci dpa phy feature register - supdpfr 340h bist registers su pci dpa bist fis control and status register - supdbfcsr 344h su pci dpa bist errors register - supdber 348h su pci dpa bist frames register - supdbfr 34ch su pci dpa host bist data low register - supdhbdlr 350h su pci dpa host bist data high register - supdhbdhr 354h su pci dpa device bist data low register - supddbdlr 358h su pci dpa device bist data high register - supddbdhr 35ch dma setup registers su pci dpa queuing table address register low - supdqtbarl 360h su pci dpa queuing table address register high - supdqtbarh 364h su pci dpa dma setup fis control and status register - supddsfcsr 368h su pci dpa host dma buffer identifier low register - supdhdbilr 36ch su pci dpa host dma buffer identifier high register - supdhdbihr 370h su pci dpa host reserved dword register 0 - supdhrdr0 374h su pci dpa host dma buffer offset register - supdhdbor 378h su pci dpa host dma transfer count register - supdhdtcr 37ch su pci dpa host reserved dword register 1- supdhrdr1 380h su pci dpa device dma buffer identifier low register - supdddbilr 384h su pci dpa device dma buffer identifier high register - supdddbihr 388h su pci dpa host reserved dword register 0 - supdhrdr0 38ch su pci dpa device dma buffer offset register - supdddbor 390h su pci dpa device dma transfer count register - supdddtcr 394h su pci dpa device reserved dword register 1 - supddrdr1 398h reserved route reserved 39ch reserved 3a0h reserved 3a4h reserved 3a8h reserved 3ach reserved 3b0h reserved 3b4h reserved 3b8h reserved 3bch reserved 3c0h reserved 3c4h reserved 3c8h test register 0 3cch test register 1 3d0h reserved 3d4h - 3ffh note: the offsets mentioned above, only indicate port 0. to view the other three port offset values, see each specific register.
74 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.3 ata command processing a command is issued to a device by writing the command block registers. the command register should be written last, after the rest of the registers are written. the rest of the registers, except for the data port register, are parameters based on the command. writing the command register initiates a transfer of a register fis from the controller to the device. commands may be categorized as data and non-data commands. non-data commands do not involve data transfer. examples of such commands are: refer to the at attachment with packet interface-6 (ata/atapi-6) specification . data commands involve the transfer of one or more blocks of data. there are two classes of data commands. there are data commands that use the dma protocol to transfer data and others that use the pio protocol. examples of pio data commands are: examples of dma data commands are:  read dma  write dma for pio commands, data is transferred by either reading or writing the command block data port register. an ata device is addressed by using two methods: chs cylinder/head/sector. lba logical block addressing. disk assembly of a drive usually consists of a number of surfaces, each of which stores data on concentric circles called tracks. the tracks are further divided into sectors, which are the smallest readable/writable units. a sector is accessed by first positioning the read/write head above the proper track and then waits until the desired sector rotates underneath the head to read or write the data. writing and reading the sector is done serially bit-by-bit. a drive usually contains multiple disks, and both sides of the a disk may be utilized for storage. each surface has its own read/write head although only one track may be written to or read at a given time. the heads are positioned collectively over the tracks. a set of tracks that may be accessed by the heads from a single position is a cylinder. a consequence of this organization is that every sector may be addressed by its cylinder, head, and sector numbers. this is referred to as the drive geometry. in lba mode, the drive presents itself as a continuous sequence of sectors or blocks which are addressed by their logical block number, like 0, 1, 2,...n-1, where n is the number of sectors on the drive. in this case the drive physical geometry (chs) need not be known to the host. for example, the drive presents itself more or less like random memories are presented where an address is used to select a byte from an array of bytes, thus the actual topology of the memory bits need not be known by the user.  seek  idle  sleep  nop  flush cache  standby  read buffer  write buffer  read sector  write sector
developer?s manual april 2004 75 intel ? 31244 pci-x to serial ata controller programming interface 5.3.1 lba addressing in pci ide mode this section describes how the command block registers are utilized in 28-bit and 48-bit lba addressing modes. the device/head register (bit 6) indicates whether a command is using chs (cylinder/head/sector) or lba address format. when bit 6 of the device/head register is set, lba address format is being used. table 28 shows how the command block registers are utilized for 28-bit lba addressing. table 29 shows how the command block registers are utilized for 48-bit lba addressing. to preserve the same ata standard programming interface, the sector count, lba low, lba mid, and lba high registers are kept as 8-bit registers. instead, these registers are implemented as 8-bit ports to two-byte deep fifos. note that the 8-bit port must always be written in pairs, otherwise proper functionality is not guaranteed. for example, a 16-bit value is loaded to any of these registers by performing two 8-bit writes. the three 16-bit registers, therefore, provi des the 48-bit lba address bits. the most recently written value to any of these registers is pushed into the lower byte position and the previous written value gets pushed into the upper byte position. as an example, when the value 17h is written to cylinder low/lba mid register followed by the value 68h to the same register, the value 17h first goes into lba[15:8]. after the value 68h is writte n, the value 17h gets pushed into lba[39:32] and the value 68h goes into lba[15:8]. table 30 summarizes the loading sequence. note: note that the device/head register is not used to form a 48-bit lba address. however, bits 0-3 of the device/head register must be set high. table 28. 28-bit lba address bit layout in pci ide mode lba bits register register bit location 76543210 sector number / lba low 7 6 5 4 3 2 1 0 cylinder low / lba mid151413121110 9 8 cylinder high / lba high 23 22 21 20 19 18 17 16 device/head n/a lba n/a dev 27 26 25 24 table 29. 48-bit lba address bit layout table 30. 48-bit address loading sequence register most recently written previous content sector count sector count[7:0] sector count[15:8] sector number / lba low lba[7:0] lba[31:24] cylinder low / lba mid lba[15:8] lba[39:32] cylinder high / lba high lba[23:16] lba[47:40] lba bits register register bit location 76543210 sector number / lba low 31/7 30/6 29/5 28/4 27/3 26/2 25/1 24/0 cylinder low / lba mid 39/15 38/14 37/13 36/12 35/11 34/10 33/9 32/8 cylinder high / lba high 47/23 46/22 45/21 44/20 43/19 42/18 41/17 40/16 device/head n/a lba n/a dev 1 1 1 1
76 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.3.2 lba addressing in dpa mode in dpa mode, the sector count, sector number, cylinder low, cylinder high registers are 16-bit wide. therefore, the sector count and the lba address bits may be written simultaneously. table 31. 28-bit lba address bit layout in dpa mode table 32. 48-bit lba address bit layout in dpa mode lba bits register register bit location 76543210 sector number / lba low76543210 cylinder low / lba mid151413121110 9 8 cylinder high / lba high 23 22 21 20 19 18 17 16 device/head n/alban/an/a27262524 lba bits register register bit location 15141312111098 7 6 5 4 3210 sector number / lba low31302928272625247 6 5 4 3210 cylinder low / lba mid 3938373635343332 15 14 13 12 1110 9 8 cylinder high / lba high 47 46 45 44 43 42 41 40 23 22 21 20 19 18 17 16 device/head n/alban/an/a1111
developer?s manual april 2004 77 intel ? 31244 pci-x to serial ata controller programming interface 5.4 reset initialization when the pci bus reset signal p_rst# is asserted, the gd31244 controller:  resets all internal units  resets all the registers to their default values  latches the configuration strap on the rising edge of p_rst#.  latches p_req64# to determine the pci bus width  initiates a comreset/hardware reset to the sata devices on the rising edge of p_rst#. note that comreset is initiated only when in pci ide mode. when in dpa mode, comreset have to be explicitly initiated using the scontrol register by software. refer to the det field in the ?su pci dpa sata scontrol register - supdsscr? on page 225 . all the state machines on the gd31244 controller get reset upon the assertion of the pci bus signal p_rst#. in addition, all the registers on the gd31244 controller get initialized to their default values. upon the deassertion of p_rst#, the gd31244 controller samples the dpa_mode# strap pin to set the operating mode. when dpa_mode# is high after reset is deasserted, the gd31244 controller will present itself on the pci bus as a pci ide device (default mode). when dpa_mode# is low after reset, the gd31244 controller will present itself on the pci bus in dpa (direct port access) mode (requires a pull-down resistor). the p_req64# signal is also sampled to determine when the gd31244 controller is connected on a 64-bit pci bus. p_req64# is latched on the rising edge of p_rst#. the state of p_req64# at the rising edge of p_rst# notifies the gd31244 controller that it is connected to a 64-bit or 32-bit pci bus. the 32bitpci# is also sampled to indicate the width of the pci-x bus to the pci-x status register. when 32bitpci# is low after reset is deasserted, it implies a 32-bit pci-x bus (requires pull-down resistor). when 32bitpci# high after reset is deasserted, it implies a 64-bit pci-x bus (default mode) a comreset is used to hardware reset the sata device and also to initialize the serial bus communication link. a comreset is issued differently in pci mode and dpa mode. in pci ide mode, upon the deassertion of p_rst#, a comreset is issued to each sata drive. in dpa mode, the serial bus will stay offline after p_rst# is deasserted. software must intervene in order to initiate a comreset initialization sequence using the scontrol register. refer to the ?su pci dpa sata scontrol register - supdsscr? on page 225 . this is done in order to minimize an initial power supply current draw due to multiple spindles starting at once. a comreset sequence causes a hardware reset of the sata device and initialization of the serial bus communication link. because of the nature of the serial ata bus, before the sata port may communicate to the attached sata device, an initialization sequence is required to establish the communication link. the phy internally provides a mechanism (phy ready) to indicate that a device is present. until a device is not detected the command block status register returns a 7fh value when read. this value is consistent with ata standard devices, which indicates that a device is not connected and therefore, software should not try writing to the taskfile registers. after the device is detected, the status register returns an 80h value. bit 7 set (bsy bit) indicates that a device is present but is busy performing its initialization se quence. after the device completes its initialization sequence, it will send a register fis to initialize th e taskfile registers. the values returned in the register fis are device dependent, and provide the status of the drive. the error register contains a diagnostic code. the sector count, sector number, cylinder low, cylinder high and device/head
78 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface registers contain signatures that are device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification for more details regarding the values returned in the device-to-host register fis. a comreset may also be initiated by software writing the det field of the scontrol register. a software reset is initiated by writing a one to the srst bit (bit 2) (software reset bit) of the device control register. a software reset simply initiates a device reset, and does not initiate any serial link initialization sequence as described above based on a comreset. after a software reset, the device will send a device-to-host register fis. the values returned in the register fis are device-dependent, and provide information as far as the status of the drive. the error register contains a diagnostic code. the sector count, sector number, cylinder low, cylinder high and device/head registers contain signatures that are device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification for more details regarding the values returned in the device-to-host register fis. devices that implement the packet command set may also be reset using the device reset command. this command may be issued to an individual device using the dev bit without affecting the other device. after the device is reset, it will return a device-to-host register fis. the error register contains a diagnostic code. the sector count, sector number, cylinder low, cylinder high and device/head registers contain signatures that are device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification for more details regarding the values returned in the device-to-host register fis. the execute device diagnostic command may be used to initiate a device diagnostic. after the device completes its diagnostic sequence, it will return a device-to-host register fis. the error register contains a diagnostic code. the sector count, sector number, cylinder low, cylinder high and device/head registers contain signatures that are device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification for more details regarding the values returned in the device-to-host register fis. note: in a master/slave setup, the gd31244 controller will merge the contents of the taskfile error and status register values from the attached devices, in accordance with the ata standard, to produce the error and status register values visible to host software. refer to the at attachment with packet interface-6 (ata/atapi-6) specification for details. note: in a master/slave setup, a hardware reset, a software reset, and an execute device diagnostic command will cause both master and slave devices to perform the requested task simultaneously. however, a device reset command may be targeted at only one device at a time using the dev bit in the device/head register.
developer?s manual april 2004 79 intel ? 31244 pci-x to serial ata controller programming interface 5.5 serial ata bist the serial ata specification identifies three loopback test schemes, of which one is required to be implemented:  far-end retimed (required feature)  far-end analog (vendor specific)  near-end analog (vendor specific) the gd31244 controller does not support near-end analog loopback. the three loopback paths are shown in figure 28 , figure 29 and figure 30 . a bist test may be initiated by either the host or the device sending the bist activate fis. for example, the bist activate fis is bidirectional. the bist activate fis contains control bits that indicate the action that the receiver should take upon receipt of the fis. the gd31244 controller implements bist using the su pci dpa bist fis control and status register - supdbfcsr . for example, this register is used to initiate and send a bist activate fis to the receiver and is also used to notify the receipt of a bist activate fis from the far-end device. in addition to the su pci dpa bist fis control and status register - supdbfcsr , the su pci dpa host bist data low register - supdhbdlr and su pci dpa host bist data high register - supdhbdhr are used for the two data dwords of the bist activate fis. when a bist fis is received, the two data dwords are written into the su pci dpa device bist data low register - supddbdlr and su pci dpa device bist data high register - supddbdhr . figure 28. far-end retimed loopback setup b1247-01 analog front end data extraction block silicon loopback rx+* rx-* 1 1 tx+* tx-* 0 0 analog front end data extraction block fixed pattern detect rx+* rx-* 0 0 tx+* tx-* 1 fixed pattern source 1
80 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface figure 29. far-end analog loopback setup figure 30. near-end analog loopback setup b1249-01 analog front end data extraction block rx+* rx-* 1 1 tx+* tx-* 0 0 analog front end data extraction block fixed pattern detect rx+* rx-* 0 0 tx+* tx-* 1 fixed pattern source 1 silicon loopback b1250-01 analog front end data extraction block rx+* rx-* 1 1 tx+* tx-* 0 0 analog front end data extraction block fixed pattern detect rx+* rx-* 0 0 tx+* tx-* 1 fixed pattern source 1 silicon loopback
developer?s manual april 2004 81 intel ? 31244 pci-x to serial ata controller programming interface 5.5.1 loopback mode testing in the loopback modes (far-end retimed or far-end analog), the gd31244 controller may be programmed to generate one of four bist patterns:  00 2 - d2.5s  01 2 - d24.3s  10 2 - 3(d10.2s) and k28.5  11 2 - 16-bit counting pattern a bist pattern is selected by programming bits [31:30] of the su pci dpa bist fis control and status register - supdbfcsr . programming bits [31:30] with 00 2 will generate a stream of d2.5 data characters. programming bits [31:30] with 01 2 will generate a stream of d24.3 data characters. programming bits [31:30] with 10 2 will generate a stream of three d10.2 data and one k28.5 control characters. programming bits [31:30] with 11 2 will generate a 16-bit counting pattern. the counting pattern is a sequence of 65536 dwords, repeated indefinitely until the test is concluded. each sequence contains dwords incremented by one starting with (dword = 0000_0000h) and ends with (dword = ffff_ffffh). for exam ple, the sequence looks as such: 0000_0000h, 0001_0001h, 0002_0002h, ---------, fffe_fffeh, and ffff_ffffh. note that the upper 16-bit of each dword is also incremented in the same manner as the lower 16-bit, and therefore looks exactly the same as the lower 16-bit. before initiating the transfer of a bist activate fis, bits [6:1] of the su pci dpa bist fis control and status register - supdbfcsr must be set appropriately. for example, to command the receiver into a far-end retimed loopback mode, bit 3 (bist fis retimed bit) of the su pci dpa bist fis control and status register - supdbfcsr must be set. and to command the receiver into the far-end analog loopback mode, bit 1 (bist fis afe loopback bit) must be set. after the appropriate bit(s) are set in bits [6:1], the bist activate fis may be sent to the receiving device by setting bit 7. the gd31244 controller also provides the following registers in order to monitor the bist tests: su pci dpa bist errors register - supdber and su pci dpa bist frames register - supdbfr . the su pci dpa bist errors register - supdber is used to keep track of the number of errors detected. the su pci dpa bist frames register - supdbfr is used when bist pattern (11 2 - 16-bit counting pattern) is selected. this register keeps track of the number of bist frames encountered. a frame is defined as one of the 16-bit counting pattern sequence described above. these steps provide an example of how a loopback test may be setup and initiated: 1. set bit 25, this will clear/reset the bist errors and bist frames registers. 2. set bits [31:30] to select one of the bist patterns. 3. set bits [29:28], must be set with the same value as bits [31:30] respectively. these bits indicate the pattern that the checker uses to compare the incoming data stream against. 4. set bit 1 or bit 3 to select afe or retimed loopback respectively. 5. set bit 24, this bit enables the pattern generator. 6. set bit 23, this bit enables the pattern checker. note: to conclude the loopback test, the far-end device must be reset using a comreset/cominit sequence.
82 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.5.2 transmit-only mode testing the bist activate fis may also be used to place the receiver in a transmit-only mode. the receiver sends the pattern indicated in the two dwords of the bist activate fis that was sent. in this mode, the gd31244 controller does not check the incoming data patterns. before sending s bist activate fis, bit 6 (bist fis transmit only bit) must be set and optionally bit 5 (bist fis align bypass bit), bit 4 (bist fis scrambling bypass bit), and bist fis primitive bit). bits 5, 4, and 2 are only used in conjunction with bit 6. refer to the sata specification for more details. note: to conclude the transmit-only test, the far-end device must be reset using a comreset/cominit sequence. the gd31244 controller may also be setup to send the following patterns to the far-end device:  a stream of k28.5s. this is done by setting bit 16 of the su pci dpa bist fis control and status register - supdbfcsr .  a stream of k28.7s. this is done by setting bit 8 of the su pci dpa bist fis control and status register - supdbfcsr .  content of the su pci dpa host bist data low register - supdhbdlr and the su pci dpa host bist data low register - supdhbdlr dwords. this is done by first loading su pci dpa host bist data low register - supdhbdlr and su pci dpa host bist data low register - supdhbdlr with the appropriate values to be transmitted, followed by setting bit 6 and setting bit 0 of the su pci dpa bist fis control and status register - supdbfcsr . bits 5, 4, and 2 of the su pci dpa bist fis control and status register - supdbfcsr may optionally be set accordingly.
developer?s manual april 2004 83 intel ? 31244 pci-x to serial ata controller programming interface 5.6 pci bus error conditions this section describes error handling that occurs on the pci bus. pci error conditions cause state machines to exit normal operation and return to idle states. in addition, status bits are set to inform error handling code of exact cause of error condition. error conditions and status may be found in the susr. pci errors are reported by setting the bit(s) in the su status register, which correspond to the error condition (master abort, target abort, etc.) pci bus error conditions and the action taken on the bus are defined within the pci local bus specification , revision 2.2, and the pci-x addendum to the pci local bus specification, revision 1.0a. the gd31244 controller adheres to the error conditions defined within the pci specification for both requester and target operation. 5.6.1 address and attribute parity errors on the pci interface the gd31244 controller must detect and report address and attribute (pci-x mode only) parity errors for transactions on the pci bus. when an address or attribute parity error occurs on the pci interface of the gd31244 controller, the following actions based on the constraints specified:  in either conventional mode or pci-x mode, when the parity error response bit in the sucmd is set, the gd31244 controller will target abort the following transactions: configuration read, configuration write, i/o read, i/o write, and memory read. when the parity error response bit is clear, the transaction will proceed normally. note that memory write and outbound split completion will complete normally as when there was no parity errors. for transactions that terminate with a target abort, the following action is taken by the gd31244 controller: ? set the target abort (target) bit (bit 11) in the susr.  assert serr# when the serr# enable bit and the parity error response bit in the sucmd are set. when the gd31244 controller asserts serr# , additional action is taken: ?set the serr# asserted bit in the susr.  set the detected parity error bit in the susr.
84 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.6.2 data parity errors on the pci interface two kinds of data parity errors may occur on the pci interface: errors encountered as an initiator:  outbound read request  outbound write request as an initiator, the gd31244 controller provides an error response for data parity errors on outbound reads, and data parity errors occurring at the target for outbound writes. errors encountered as a target:  inbound read request (immediate data transfer)  inbound write request  split completion messages  outbound read completion as a target, the gd31244 controller provides an error response for data parity errors on inbound writes, inbound configuration writes, and split completion messages. however, there will be no error response for data parity errors on inbound reads. 5.6.2.1 outbound read request data parity errors 5.6.2.1.1 immediate data transfer as an initiator, the gd31244 controller may encounter this error condition in conventional or pci-x mode when the target transfers data immediately rather than signalling a retry 1 (conventional delayed read request) or a split response termination (pci-x split read request). data parity errors occurring during read operations initiated by the gd31244 controller are recorded, perr# is asserted (when enabled) and serr# is asserted (when enabled). specifically, the following actions with the given constraints are taken by the gd31244 controller:  perr# is asserted two clocks cycles (three clock cycles when operating in the pci-x mode) following the data phase in which the data parity error is detected on the bus. this is only done when the parity error response bit in the sucmd is set. when the gd31244 controller asserts perr# , additional actions will be taken: ? the master parity error bit in the susr is set. ? when the gd31244 controller is operating in the pci-x mode, the serr# enable bit in the sucmd is set, and the data parity error recover enable bit in the supcixcmd register is clear, assert serr# , otherwise no action. when the gd31244 controller asserts serr# , additional action is taken: set the serr# asserted bit in the susr.  the detected parity error bit in the susr is set.  set the dma error bit and clear the dma active bit in the dma status register. 1. retry terminations may also be signaled in pci-x mode when the target is too busy to handle the current request. however, thi s is not the same as a delayed read request in conventional pci mode since the requester is not required or expected by the target to return with the same read request.
developer?s manual april 2004 85 intel ? 31244 pci-x to serial ata controller programming interface 5.6.2.1.2 split response termination as an initiator, the gd31244 controller may encounter this error condition in pci-x mode when the target signals a split response termination. parity errors occurring during split response terminations of read requests by the gd31244 controller are recorded, perr# is asserted (when enabled) and serr# is asserted (when enabled). specifically, the following actions with the given constraints are taken by the gd31244 controller:  perr# is asserted three clock cycles following the split response termination in which the parity error is detected on the bus. this is only done when the parity error response bit in the sucmd is set. when the gd31244 controller asserts perr# , additional actions will be taken: ? the master parity error bit in the susr is set. ?when the serr# enable bit in the sucmd is set, and the data parity error recover enable bit in the supcixcmd register is clear, assert serr# , otherwise no action. when the gd31244 controller asserts serr# , additional action is taken: set the serr# asserted bit in the susr.  the detected parity error bit in the susr is set.  set the dma error bit and clear the dma active bit in the dma status register.
86 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.6.2.2 outbound write request data parity errors 5.6.2.2.1 outbound writes that are not msi (message signaled interrupts) as an initiator, the gd31244 controller may encounter this error condition when operating in either the conventional or pci-x modes. data parity errors occurring during write operations initiated by the gd31244 controller may record the assertion of perr# from the target on the pci bus. specifically, the following actions with the given constraints are taken by the gd31244 controller:  when perr# is sampled active and the parity error response bit in the sucmd is set, set the master parity error bit in the susr. when the parity error response bit in the sucmd is clear, no action is taken. when the master parity error bit in the susr is set, additional actions will be taken: ? when the gd31244 controller is operating in the pci-x mode, the serr# enable bit in the sucmd is set, and the data parity error recover enable bit in the supcixcmd register is clear, assert serr# , otherwise no action. when the gd31244 controller asserts serr# , additional action is taken: set the serr# asserted bit in the susr.  set the dma error bit and clear the dma active bit in the dma status register. 5.6.2.2.2 msi outbound writes as an initiator, the gd31244 controller may encounter this error condition when operating in either the conventional or pci-x modes. data parity errors occurring during msi write operations initiated by the gd31244 controller may record the assertion of perr# from the target on the pci bus. when an error occurs, the gd31244 controller will complete the transaction normally. then, the following actions with the given constraints are taken by the gd31244 controller:  when perr# is sampled active and the parity error response bit in the sucmd is set, set the master parity error bit in the susr. when the parity error response bit in the sucmd is clear, no action is taken. when the master parity error bit in the susr is set, additional actions will be taken: ? when the serr# enable bit in the sucmd is set, assert serr# , otherwise no action. when the gd31244 controller asserts serr#, additional actions will be taken: set the serr# asserted bit in the susr.
developer?s manual april 2004 87 intel ? 31244 pci-x to serial ata controller programming interface 5.6.2.3 inbound read request data parity errors 5.6.2.3.1 immediate data transfer as a target, the gd31244 controller may encounter this error when operating in the conventional pci or pci-x modes. inbound read data parity errors occur when read data delivered from the inbound read queue is detected as having bad parity by the initiator of the transaction who is receiving the data. the initiator may optionally report the error to the system by asserting perr# . as a target device in this scenario, no action is required and no error bits are set. 5.6.2.4 inbound write request data parity errors as a target, the gd31244 controller may encounter this error when operating in the conventional or pci-x modes. data parity errors occurring during write operations received by the gd31244 controller may assert perr# on the pci bus. specifically, the following actions with the given constraints are taken by the gd31244 controller:  perr# is asserted two clocks cycles (three clock cycles when operating in the pci-x mode) following the data phase in which the data parity error is detected on the bus. this is only done when the parity error response bit in the sucmd is set.  the detected parity error bit in the susr is set. 5.6.2.5 outbound read completion data parity errors as a target, the gd31244 controller may encounter this error when operating in the pci-x mode. data parity errors occurring during read completion transactions that are claimed by the gd31244 controller are recorded, perr# is asserted (when enabled) and serr# is asserted (when enabled). specifically, the following actions with the given constraints are taken by the gd31244 controller:  perr# is asserted three clock cycles following the data phase in which the data parity error is detected on the bus. this is only done when the parity error response bit in the sucmd is set. when the gd31244 controller asserts perr# , additional actions are taken: ? the master parity error bit in the susr is set. ?when the serr# enable bit in the sucmd is set, and the data parity error recover enable bit in the supcixcmd register is clear, assert serr# , otherwise no action. when the gd31244 controller asserts serr# , additional action is taken: set the serr# asserted bit in the susr.  the detected parity error bit in the susr is set.  set the dma error bit and clear the active bit in the dma status register.
88 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.6.2.6 split completion messages as a target, the gd31244 controller may encounter this error when operating in the pci-x mode. data parity errors occurring during split completion messages claimed by the gd31244 controller may assert perr# (when enabled) or serr# (when enabled) on the pci bus. when an error occurs, the gd31244 controller will accept the data and complete normally. specifically, the following actions with the given constraints are taken by the gd31244 controller:  perr# is asserted three clocks cycles following the data phase in which the data parity error is detected on the bus. this is only done when the parity error response bit in the sucmd is set. when the gd31244 controller asserts perr# , additional actions are taken: ? the master parity error bit in the susr is set. ? when the serr# enable bit in the sucmd is set, and the data parity error recover enable bit in the supcixcmd register is clear, assert serr# ; otherwise no action is taken. when the gd31244 controller asserts serr#, additional action is taken: set the serr# asserted bit in the susr.  when the sce bit (split completion error -- bit 30 of the completer attributes) is set during the attribute phase, the received split completion error message bit in the supcixsr is set. when the gd31244 controller sets this bit, additional actions are taken: ? the detected parity error bit in the susr is set. ? set the dma error bit and clear the dma active bit in the dma status register.
developer?s manual april 2004 89 intel ? 31244 pci-x to serial ata controller programming interface 5.6.3 master aborts on the pci interface as an initiator on the pci bus, the gd31244 controller may encounter master abort conditions during:  outbound read request  outbound write request  outbound read completion as a target, the gd31244 controller pci interface is capable of signaling a master abort case during:  address parity error (conventional mode)  inbound read request (pci-x mode) 5.6.3.1 master-aborts signaled by intel ? 31244 pci-x to serial ata controller as an initiator 5.6.3.1.1 master aborts for outbound read or write request this error may be encountered in both the conventional and the pci-x modes. for an outbound transaction, there are two ways in which a master-abort may be signaled to the gd31244 controller: 1. in the conventional or pci-x modes, a master abort is signaled when the target of the transaction does not assert devsel# within five clocks (seven clocks when operating in the pci-x mode) of the assertion of frame# . 2. in pci-x mode, the gd31244 controller may initiate a split request (read request) to the target-side interface of a pci-to-pci bridge. when the pci-to-pci bridge detects a master abort on its initiating interface for that split request, master abort is signaled to gd31244 controller through a master-abort split completion error me ssage (class=1h - bridge error and index=00h - master abort). the following actions with given constraints are performed by gd31244 controller when a master abort is detected by the pci initiator interface or the pci target interface receives a master-abort split completion error message:  set the master abort bit (bit 13) in the susr.  when the transaction is an msi outbound write and the serr# enable bit in the sucmd is set, assert serr# , otherwise no action. when the gd31244 controller asserts serr#, additional action is taken: set the serr# asserted bit in the susr  when operating in pci-x mode and master-abort is signaled through a split completion error message, the received split completion error message bit in supcixsr is set.  set the dma error bit and clear the dma active bit in the dma status register.
90 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.6.3.2 master-aborts signaled by intel ? 31244 pci-x to serial ata controller as a target 5.6.3.2.1 unsupported pci commands when the gd31244 controller encounters a pci or pci-x command on an inbound transaction that is not supported, it will signal a master abort by not asserting devsel# . refer to table 3 on page 23 and table 4 on page 24 . 5.6.3.2.2 pci ide control block registers in pci ide mode, the control block registers are located in the i/o space, and the smallest amount of i/o space that a base address register may request is four bytes. the control block is accessed using base address registers 1 and 3 for the primary and secondary channels respectively. in this four byte allocation for the control block, the byte at offset 02h is where the alternate status/device control registers are located. the gd31244 controller will master abort access made to the bytes at offsets (00h, 01h, and 03h) by not asserting devsel# .
developer?s manual april 2004 91 intel ? 31244 pci-x to serial ata controller programming interface 5.6.4 target aborts on the pci interface as an initiator on the pci bus, the gd31244 controller may encounter target abort conditions during:  outbound read request  outbound write request  outbound read completion as a target, the gd31244 controller pci interface is capable of signaling a target abort case during:  configuration read  configuration write  i/o read  i/o write  memory read 5.6.4.1 target aborts for outbound read request or outbound write request this error may be encountered by the gd31244 controller in both the conventional and pci-x modes. for an outbound transaction, there are two ways in which a target-abort may be signaled to the gd31244 controller: 1. in the conventional or pci-x modes, a target abort is signaled when the target of the transaction simultaneously deasserts devsel# , deasserts trdy#, and asserts stop# . 2. in pci-x mode, the gd31244 controller may initiate a split request (read request) to the target-side interface of a pci-to-pci bridge. when the pci-to-pci bridge detects a target abort on its initiating interface for that split request, target abort is signaled to gd31244 controller through a target-abort split completion error message (class = 1h - bridge error and index = 01h - target abort). the following actions with the given constraints are performed by the gd31244 controller when a target abort is detected by the pci initiator interface or the pci target interface receives a target-abort split completion error message:  set the target abort (master) bit (bit 12) in the susr.  when the transaction is an msi outbound write and the serr# enable bit in the sucmd is set, assert serr# ; otherwise, no action is taken. when the gd31244 controller asserts serr#, additional action is taken: set the serr# asserted bit in the susr.  when operating in the pci-x mode and the target-abort is signaled through a split completion error message, the received split completion error message bit in the supcixsr is set.  set the dma error bit and clear the dma active bit in the dma status register.
92 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.6.4.2 target-aborts signaled by intel ? 31244 pci-x to serial ata controller as a target 5.6.4.2.1 configuration read and write in both conventional pci and pci-x modes, when an address parity error or attribute parity error (pci-x mode only) is detected during a configuration read or write, the gd31244 controller will target abort the transaction. the following action is taken when the gd31244 controller signal a target abort:  set the target abort (target) bit (bit 11) in the susr. 5.6.4.2.2 i/o read and write in both conventional pci and pci-x modes, when an address parity error or attribute parity error (pci-x mode only) is detected during a i/o read or write, the gd31244 controller will target abort the transaction.the following action is taken when the gd31244 controller signal a target abort:  set the target abort (target) bit (bit 11) in the susr. 5.6.4.2.3 memory read in both conventional pci and pci-x modes, when an address parity error or attribute parity error (pci-x mode only) is detected during a memory read, the gd31244 controller will target abort the transaction. note that an address or attribute parity error occurring on a memory write is completed normally as when no error occurred. the following action is taken when the gd31244 controller signal a target abort:  set the target abort (target) bit (bit 11) in the susr.
developer?s manual april 2004 93 intel ? 31244 pci-x to serial ata controller programming interface 5.6.5 corrupted or unexpected split completions warning: when any of the errors discussed in this section actually occur, a catastrophic system failure is likely to result from which the pci-x addendum to the pci local bus specification, revision 1.0a provides no recovery mechanism. in these cases, the gd31244 controller may be communicating with a non-compliant target device or the system may not be configured properly. 5.6.5.1 completer address the gd31244 controller will assert devsel# for split completion transactions where only the requester id matches that of a currently outstanding split request in the outbound transaction queue. for example, the tag does not have to match. however, the gd31244 controller will discard the data of a split completion with an unmatched tag and set the unexpected split completion bit (bit 19) in the supcixsr. the sata ports? dmas are not halted in this situation. when the sequence id of a split completion transaction matches that of an outstanding request, but the lower address field is not valid, the gd31244 controller will accept the split completion transaction in its? entirety according to the invalid lower address field as when nothing happened. 5.6.5.2 completer attributes when the sequence id of a split completion transaction matches that of an outstanding request, but the byte count is not valid, the gd31244 controller will accept the split completion transaction in its entirety according to the invalid byte count field as when nothing happened.
94 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.6.6 serr# assertion and detection the gd31244 controller is capable of reporting error conditions through the use of the serr# output. the following conditions may result in the assertion of serr# by the gd31244 controller:  an address parity error (or an attribute parity error when operating in the pci-x mode) is detected by the gd31244 controller pci interface (see section 5.6.1, ?address and attribute parity errors on the pci interface? on page 83 for details).  a master data parity error is recorded in the susr while operating in the pci-x mode (see section 5.6.2, ?data parity errors on the pci interface? on page 84 for details).  an outbound msi write transaction is either signaled a master-abort or a target-abort by the target. the following actions with the given constraints are performed by the gd31244 controller when serr# is asserted by the gd31244.  set the serr# asserted bit in the susr. note: gd31244 does not detect serr# on the bus, and does not take any action for serr# asserted by other pci/x devices.
developer?s manual april 2004 95 intel ? 31244 pci-x to serial ata controller programming interface 5.6.7 pci error summary table 17 summarizes the gd31244 controller error reporting for pci bus errors. the table assumes that all error reporting is enabled through the appropriate command registers (unless otherwise noted). the su status register records pci bus errors. note that the serr# asserted bit in the status register is set only when the serr# enable bit in the command register is set. table 33. 31244 controller error reporting summary - pci interface (sheet 1 of 3) error condition a (bus mode b ) bits set in su status register (susr c ) or su pci-x status register (supcixsr d ) pci ide mode su ide channel 0 dma status register (suicdsr0) or su ide channel 1 dma status register (suicdsr1) dpa mode su pci dma status register (supddsr) pci bus error response (i.e., signal target-abort, signal master-abort etc.) dma action dma action address or attribute parity error (both) target abort (target) - bit 11 of susr for the following transactions: configuration read, configuration write, i/o write, i/o read, and memory read. memory write and outbound read split completion do not signal a target abort. none none (both) serr# asserted - bit 14 of susr (both) detected parity error - bit 15 of susr outbound read request (immediate data transfer) parity error (both) signal perr# (both) serr# (pci-x mode only).  set dma error - bit 1  clear dma active - bit 0  set dma error - bit 1  clear dma active - bit 0 (both) master parity error - bit 8 susr (pci-x) serr# asserted - bit 14 susr (both) detected parity error - bit 15 of susr outbound read request (split response termination) parity error (pci-x) signal perr# and serr#  set dma error - bit 1  clear dma active - bit 0  set dma error - bit 1  clear dma active - bit 0 (pci-x) master parity error - bit 8 susr (pci-x) serr# asserted - bit 14 susr (pci-x) detected parity error - bit 15 of susr outbound read completion parity error (pci-x) signal perr# and serr#  set dma error - bit 1  clear dma active - bit 0  set dma error - bit 1  clear dma active - bit 0 (pci-x) master parity error - bit 8 susr (pci-x) serr# asserted - bit 14 susr (pci-x) detected parity error - bit 15 of susr outbound write request parity error (both) signal serr# (only for pci-x or msi writes).  set dma error - bit 1  clear dma active - bit 0  set dma error - bit 1  clear dma active - bit 0 (both) master parity error - bit 8 of susr (pci-x or msi) serr# asserted - bit 14 of susr
96 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface inbound read request (immediate data transfer) parity error (both) inbound write request parity error (both) signal perr# . (both) detected parity error - bit 15 of susr split completion message parity error (pci-x) signal perr# and serr# .  set dma error - bit 1  clear dma active - bit 0  set dma error - bit 1  clear dma active - bit 0 (pci-x) master parity error - bit 8 of susr (pci-x) serr# asserted - bit 14 of susr (pci-x and sce e ) received split completion error message - bit 29 supcixsr (pci-x) detected parity error - bit 15 of susr outbound read request master-abort (both) none  set dma error - bit 1  clear dma active - bit 0  set dma error - bit 1  clear dma active - bit 0 (both) master abort - bit 13 of susr (pci-x and sce) received split completion error message - bit 29 of supcixsr outbound write request master-abort (both) signal serr# (msi)  set dma error - bit 1  clear dma active - bit 0  set dma error - bit 1  clear dma active - bit 0 (both) master abort - bit 13 of susr (msi) serr# asserted - bit 14 of susr inbound read request target-abort (both) (both) target abort (target) - bit 11 of susr inbound write request target-abort (both) (both) target abort (target) - bit 11 of susr outbound read request target-abort (both)  set dma error - bit 1  clear dma active - bit 0  set dma error - bit 1  clear dma active - bit 0 (both) target abort (master) - bit 12 of susr (pci-x and sce) received split completion error message - bit 29 of supcixsr outbound write request target-abort (both) signal serr# (msi)  set dma error - bit 1  clear dma active - bit 0  set dma error - bit 1  clear dma active - bit 0 (both) target abort (master) - bit 12 of susr table 33. 31244 controller error reporting summary - pci interface (sheet 2 of 3) error condition a (bus mode b ) bits set in su status register (susr c ) or su pci-x status register (supcixsr d ) pci ide mode su ide channel 0 dma status register (suicdsr0) or su ide channel 1 dma status register (suicdsr1) dpa mode su pci dma status register (supddsr) pci bus error response (i.e., signal target-abort, signal master-abort etc.) dma action dma action
developer?s manual april 2004 97 intel ? 31244 pci-x to serial ata controller programming interface (msi) serr# asserted - bit 14 of susr unexpected split completion (pci-x) in the pci-x mode, the transaction will complete normally according to the invalid lower address field or invalid byte count. none none (pci-x) unexpected split completion bit set only for an unmatched tag - bit 19 none none a. all parity errors refer to data parity errors except where otherwise noted. b. codes for bus mode in which this error response applies: pci-x means pci-x mode only, conventional means conventional pci mod e only, and both means that the error response applies both in the conventional and pci-x mode of operation. msi stands for message-sig naled interrupts and refers to an outbound write transaction that is actually an msi write transaction. c. table assumes that parity error response - bit 6 of the sucmd register is set. d. table assumes that data parity recovery enable - bit 0 of the supcixcmd is clear. e. when the sce bit (bit 30 of the completer attributes) and the scm bit (bit 29 of the completer attributes) are set during the attribute phase of a split completion transaction, the transaction is a split completion message that is an error message. in this case, the receive d split completion error message - bit 29 of the supcixsr is set. table 33. 31244 controller error reporting summary - pci interface (sheet 3 of 3) error condition a (bus mode b ) bits set in su status register (susr c ) or su pci-x status register (supcixsr d ) pci ide mode su ide channel 0 dma status register (suicdsr0) or su ide channel 1 dma status register (suicdsr1) dpa mode su pci dma status register (supddsr) pci bus error response (i.e., signal target-abort, signal master-abort etc.) dma action dma action
98 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.7 serial ata bus and device error conditions this section describes error handling that are specific to the serial ata bus and serial ata device. 5.7.1 serial ata device error conditions these are error conditions that are generated by the sata device itself. for example, when an ata command is not supported by a device, the device will respond by returning a command-aborted error condition. the sata device reports error conditions through the command block status and error registers. the bits in the error register are only valid when the err bit (bit 0) of the status register is set. a device reports error conditions by sending a device-to-host register fis or a pio setup fis. 5.7.2 serial ata bus and protocol error conditions serial ata bus and protocol related errors are reported in the sata serror register. some of the errors reported may generate interrupts that are posted in the sata interrupt pending register. refer to section 5.10.8.1, ?su pci dpa interrupt pending register - supdipr? on page 194 and section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . table 34 summarizes all the sata bus related error conditions reported by the gd31244 controller. table 34. 31244 controller serial ata protocol and bus error conditions (sheet 1 of 2) bit description 31-26 reserved 25 diag_f - invalid fis type: when set to one, this bit indicates that the fis type field was not recognized. for example the fis is invalid. this bit is cleared by writing a 1 to it. 24 diag_t - reserved, not implemented. 23 diag_s - reserved, not implemented. 22 diag_h - handshake error: when set to one, this bit indicates that one or more r_err handshake response was received in response to frame transmission. such errors may be the result of a crc error detected by the receiver. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 3, 11, 19, and 27 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 21 diag_c - crc error: when set to one, this bit indicates that one or more crc errors occurred. this bit is set when a crc error is detected when receiving a data fis only. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 6, 14, 22, and 30 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 20 diag_d - disparity error: when set to one, this bit indicates that incorrect disparity was detected one or more times since the last time this bit was cleared. this bit is set when a disparity error is detected when receiving a data fis only. this bit is cleared by writing a 1 to it. 19 diag_b - not implemented. 18 diag_w - comm wake: when set to one, this bit indicates that a comm wake was detected by the phy. this bit is cleared by writing a 1 to it. the default value after reset is 0 2 . after comm wake is detected, the value will change to 1 2 .
developer?s manual april 2004 99 intel ? 31244 pci-x to serial ata controller programming interface 17 diag_i - reserved, not implemented. 16 diag_n - phyrdy change state: when set to one this bit indicates that the phyrdy signal changed state. state change means going from ready-to-not ready or not ready-to-ready. this bit shall remain cleared when the phy was not detected as ready during the initialization process. when the phy goes ready after initialization, this bit shall transition to 1. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 0, 8, 16, and 24 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready (state change from not ready to ready) as part of the initialization sequence, the value will change to 1 2 . 15-12 reserved. 11 err_e - internal error: this bit indicates that a fifo error occurred due to a fifo overrun or underrun condition. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 2, 10, 18, and 26 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 10 err_p - protocol error: this bit when set indicates that a corrupted fis was received. this bit may indicate that the fis received was an invalid fis type or that the received fis was not properly structured. for example, incorrect length. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 4, 12, 20, and 28 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 09 err_c - non-recovered communication: when set to one, this bit indicates that there is no signal detected on the phy receive path (rx). this may occur from a faulty interconnect or the device has been removed. this bit is cleared by writing a 1 to it. the default value after reset is 0 2 . after reset, when a signal is not detected on the receive path (rx pair), the value will change to 1 2 . after detecting a signal on the receive line, this bit will then change to 0 2 . 08 err_t - non-recovered transient data integrity error: this bit indicates that either a crc error, disparity error, or the receipt of an r_err primitive occurred in response to a data fis. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 5, 13, 21, and 29 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 07:02 reserved 01 err_m - recovered communications error: this bit indicates that the phy went from not ready-to-ready. this bit shall remain cleared when the phy was not detected as ready during the initialization process. when the phy goes ready after initialization, this bit shall transition to 1. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 1, 9, 17, and 25 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready as part of the initialization sequence, the value will change to 1 2 . 00 err_i - reserved, not implemented. table 34. 31244 controller serial ata protocol and bus error conditions (sheet 2 of 2) bit description
100 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.8 sata port interrupt generation when the sata unit on the gd31244 controller is in pci ide mode, interrupts that are generated follow the ata standard. an ata device generates an interrupt using the intrq hardware signal during normal data transfer to indicate data transfer completion and/or to indicate an error condition. an error condition is indicated when the err bit (bit 0) in the status register is set. in contrast, a sata device indicates an interrupt by using the ?i? bit (a pseudo intrq signal) in the pio setup fis, or the device-to-host register fis. a hardware interrupt is then generated based on the ?i? being set. when the sata unit operates in pci dpa mode, interrupts may also be generated by bits being set in the sata serror registers, in addition to the normal ata standard interrupts explained above. refer to table 136, ?su pci dpa sata serror register - supdsser? on page 222 , and table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . the block diagram in figure 31 shows how each sata unit generates and posts interrupts coming from the sata ports. sata unit posted interrupts are routed onto pci interrupt line - pinta#. interrupts may also be generated using message-signaled interrupts. refer to section 5.9, ?message-signaled interrupts? on page 102 . when msi is enabled, the gd31244 controller will not generate interrupts using the interrupt line - pinta#.
developer?s manual april 2004 101 intel ? 31244 pci-x to serial ata controller programming interface figure 31. sata unit interrupt generation block diagram sata device sata or or direct port access mode pci ide mode interrupts serror port 3 interrupts to pci interrupt pin - pinta# port 0 port 3 sata mask bits provided device control register (nien) notes: port 0 serror bits are reported on bits 6-0 port 1 serror bits are reported on bits 14-8 port 2 serror bits are reported on bits 22-16 port 3 serror bits are reported on bits 30-24 interrupt interrupt mask pending register register port 1 port 2 0 31 15 14 30 23 22 port 0- port 3 24 16 7 6 8 serror port 2 interrupts serror port 1 interrupts serror port 0 interrupts 0 31 15 14 30 23 22 24 16 7 6 8
102 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.9 message-signaled interrupts the gd31244 controller may deliver interrupt to the host processor through the p_inta# output pin or the message signaled interrupt (msi) mechanism. when a host processor enables message-signaled interrupts (msi) on the gd31244 controller, a sata unit interrupt will be signaled to the host thr ough a pci write instead of the assertion of the p_inta# output pin. pci-x addendum to the pci local bus specification , revision 1.0a states: ?pci-x devices that generate interrupts are required to support message-signaled interrupts, as defined by the pci local bus specification , revision 2.2 and must support a 64-bit message address.? ?devices that require interrupts in systems that do not support message-signaled interrupts, must implement interrupt pins.? thus, the gd31244 controller needs to implement both wired and message-signaled interrupt delivery mechanisms. in support of msi, the gd31244 controller will implement the msi capability structure. the capability structure includes the ?su msi message control register - sumsi_message_control? on page 162 , the ?su msi message address register - sumsi_message_address? on page 163 , the ?su msi message upper address register - sumsi_message_upper_address? on page 164 and the ?su msi message data register - sumsi_message_data? on page 165 . during system initialization, the configuration software for an msi system will read the message control register to determine that the gd31244 controller supports a 64-bit message address, and that it is capable of generating four unique interrupt messages. after gathering this data from all of the msi capable devices in the system, the configuration software will decide where to initialize the message address and how many unique messages each msi capable device is allowed. then, software will write the message address registers (and the message upper address registers when message address is above the 4g address boundary 1 ), and the message data register. this system specified data will be used to route the interrupt request message to the appropriate entry in a host processor local apic table. configuration of msi completes with a write to the message control register which includes an update to the multiple message enable field and th e msi enable bit of each device. this will inform the device how many unique messages (local apic table entries) have been allocated for exclusive use by that device and enable that device for msi. device hardware is required to handle allocation of fewer unique interrupt messages than requested by the multiple message capable field. the gd31244 controller may generate up to four messages - one per sata port, but it is also able to generate less than four messages - two or one message. interrupt handler software needs to read the sata port status and interrupt pending registers to determine the cause of the interrupt when more than one sata ports are represented by less than four msi messages. note: when host software enables msi, the interrupt will not result in the assertion of the p_inta# output pin. 5.9.1 level-triggered versus edge-triggered interrupts when msi is disabled, the p_inta# pin remains asserted and pended to the host when any of the sata unit interrupt sources requires service. since the pci pin signaled interrupt is level-triggered , the interrupt service routine will not drop out of the service routine until the interrupt signal is deasserted. this will ensure that an interrupt will not be missed. msi interrupts are inherently edge-triggered, in that an interrupt is only pended to the host as a write event when any of the sata port requires service. 1. when host software writes the message upper address register to a non-zero value, device hardware will use a write transactio n with a dual address cycle (dac) to present the full 64-bit address to the bus.
developer?s manual april 2004 103 intel ? 31244 pci-x to serial ata controller programming interface 5.10 register definitions the section is broken into three subsections. each subsection describes a different programming interface.  pci ide mode registers  direct port access mode registers 5.10.1 pci ide mode registers this section defines the sata port registers as viewed from the pci bus when in pci ide mode every pci device/function implements its own separate configuration address space and configuration registers. the pci local bus specification , revision 2.2 requires that configuration space be 256 bytes, and the first 64 bytes must adhere to a predefined header format. figure 32 defines the header format. table 35 shows the pci configuration registers. table 35 shows the entire serial ata unit configuration space (including header and extended registers) and the corresponding section that describes each register. the serial ata unit is programmed through a type 0 configuration command on the pci interface. serial ata unit (su) configuration space is function number zero. beyond the required 64-byte header format, serial ata unit configuration space implements extended register space in support of the unit functionality. refer to the pci local bus specification , revision 2.2 for details on accessing and programming configuration register space. figure 32. su in pci ide mode interface configuration header format device id vendor id 00h status command 04h class code revision id 08h bist header type latency timer cacheline size 0ch base address 0 10h base address 1 14h base address 2 18h base address 3 1ch base address 4 20h base address 5 24h reserved 28h subsystem id subsystem vendor id 2ch expansion rom base address 30h reserved capabilities pointer 34h reserved 38h maximum latency minimum grant interrupt pin interrupt line 3ch
104 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface the serial ata unit includes two 8 byte and one 16-byte extended capability configuration spaces beginning at configuration offset e0h, e8h and f0h. the extended configuration spaces may be accessed by a device on the pci interface through a mechanism defined in the pci local bus specification , revision 2.2. in the su status register ( section 5.10.2.4 ) the appropriate bit is set indicating that the extended capability configuration space is supported. when this bit is read, the device may then read the capabilities pointer register ( section 5.10.2.20 ) to determine the configuration offset of the extended capabilities configuration header. the format of these headers are depicted in figure 33 through figure 35 . the first byte at the extended configuration offset e0h is the pci-x capability identifier register ( section 5.10.2.42 ). this will identify this extended configuration header space as the type defined by the pci-x addendum to the pci local bus specification, revision 1.0a. following the capability identifier register will be the single byte next item pointer register ( section 5.10.2.43 ) which will indicate the configuration offset of an additional extended capabilities header, when supported. in the sata unit, the next item pointer register is set to e8h indicating that there are additional extended capabilities headers supported in the sata unit configuration space. . the first byte at the extended configuration offset e8h is the sata unit capability identifier register ( section 5.10.2.46 ). this will identify this extended configuration header space as the type defined by the pci bus power management interface specification , revision 1.1. following the capability identifier register will be the single byte next item pointer register ( section 5.10.2.47 ) which will indicate the configuration offset of an additional extended capabilities header, when supported. in the serial ata unit, the next item pointer register is set to f0h indicating that there are additional extended capabilities headers supported in the serial ata unit configuration space. it is the configuration software responsibility to properly enable and initialize the sata unit power management interface. figure 33. sata unit interface extended configuration header format (pci-x capability) e0h e4h pci-x capability id next item pointer pci-x command pci-x status figure 34. su in pci ide mode interface extended configuration header format (power management) e8h ech capability identifier next item pointer power management capabilities power management control/status reserved
developer?s manual april 2004 105 intel ? 31244 pci-x to serial ata controller programming interface the first byte at the extended configuration offset f0h is the msi capability identifier register ( section 5.10.2.50 ). this will identify this extended configuration header space as the type defined by the pci local bus specification , revision 2.2. following the capability identifier register will be the single byte next item pointer register ( section 5.10.2.51 ) which will indicate the configuration offset of an additional extended capabilities header, when supported. in the sata unit, the next item pointer register is set to 00h indicating that there is no additional extended capabilities headers supported in the sata unit configuration space. the following sections describe the serial ata unit configuration registers. configuration space consists of 8-, 16-, 24-, and 32-bit registers arranged in a predefined format. each register is described in functionality, access type (read/write, read/clear, read only) and reset default condition. see section 1.2, ?terminology and conventions? on page 16 for a description of reserved , read only , and read/clear . all registers adhere to the definitions found in the pci local bus specification , revision 2.2 unless otherwise noted. the pci register number for each register is given in table 35 . as stated, a type 0 configuration command on the bus with an active idsel . figure 35. su in pci ide mode interface extended configuration header format (msi capability) f0h f4h msi capability id msi next item pointer msi message control msi message address msi message upper address f8h fch msi message data reserved
106 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface table 35. sata unit pci configuration space registers (sheet 1 of 2) register name bits pci configuration cycle register # offset su vendor id register - suvid 16 0 00h su device id register - sudid 16 0 02h su command register - sucmd 16 1 04h su status register - susr 16 1 06h su revision id register - surid 8208h su class code register - succr 24 2 09h su cacheline size register - suclsr 830ch su latency timer register - sult 830dh su header type register - suhtr 830eh su bist register - subistr 830fh su base address register 0 - subar0 32 4 10h su base address register 1 - subar1 32 5 14h su base address register 2 - subar2 32 6 18h su base address register 3 - subar3 32 7 1ch su base address register 4 - subar4 32 8 20h su base address register 5 - subar5 32 9 24h reserved. 32 10 28h su subsystem vendor id register - susvir 16 11 2ch su subsystem id register - susir 16 11 2eh su expansion rom base address register - suexrombar .321230h su capabilities pointer register - su_cap_ptr 81334h reserved. 24 13 35h reserved. 32 14 38h su interrupt line register - suilr 8153ch su interrupt pin register - suipr 8153dh su minimum grant register - sumgnt 8153eh su maximum latency register - sumlat 8153fh reserved. 32 16 40h reserved. 32 17 44h reserved. 32 18 48h reserved. 24 19 4ch reserved. 8194fh reserved. 32 20 50h reserved. 32 21 54h reserved. 32 22 58h reserved. 32 23 5ch reserved. 32 24 60h reserved. 32 25 64h reserved. 32 26 68h reserved. 32 27 6ch reserved. 32 28 70h reserved. 32 29 74h reserved. 32 30 78h reserved. 32 31 7ch reserved. 32 32 80h
developer?s manual april 2004 107 intel ? 31244 pci-x to serial ata controller programming interface s reserved. 32 33 84h reserved. 32 34 88h reserved. 32 35 8ch spi command register - spicmdr 83690h spi control register - spicntr 8 36 91h spi status register - spistatr 83692h reserved. 83693h spi data register - spidatr 32 37 94h reserved. 16 37 96h su extended control and status register 0 - suecsr 0 32 38 98h reserved. 32 39 9ch su dma control status register- sudcscr 32 40 a0h su dummy register sudr 32 41 a4h su interrupt status register suisr 32 42 a8h su interrupt mask register suimr 32 43 ach reserved. 32 44 b0h reserved. 32 45 b4h reserved. 32 46 b8h reserved. 32 47 bch su transaction control sutcr 32 48 c0h su target split completion message enable register sutscmer 32 49 c4h su target delayed/split request pending register sudrpr 32 50 c8h su transaction control 2 register sutc2r 32 51 cch su master deferred/split sequence pending register - sumdspr 32 52 d0h su master split completion message received with error message register - sumscmremr 32 53 d4h su arbiter control - suacr 32 54 d8h reserved. 32 55 dch su pci-x_capability identifier register - supci-x_cap_id 856e0h su pci-x next item pointer register - supci-x_next_item_ptr 856e1h su pci-x command register - supcixcmd 16 56 e2h su pci-x status register - supcixsr 32 57 e4h su pm_capability identifier register - supm_cap_id 858e8h su pm next item pointer register - supm_next_item_ptr 858e9h su power management capabilities register - supmcr 16 58 eah su power management control/status register - supmcsr 16 59 ech reserved. 16 59 eeh su msi capability identifier register - sumsi_cap_id 860f0h su msi next item pointer register - sumsi_next_ptr 860f1h su msi message control register - sumsi_message_control 16 60 f2h su msi message address register - sumsi_message_address 32 61 f4h su msi message upper address register - sumsi_message_upper_address 32 62 f8h su msi message data register - sumsi_message_data 16 63 fch table 35. sata unit pci configuration space registers (sheet 2 of 2) register name bits pci configuration cycle register # offset
108 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface s table 36. sata command block registers in pci ide mode register name bits access bar 0/2 + offset su ide data port register - suidr 16 read/write 00h su ide error register - suier 8 read only 01h su ide features register - suifr 8 write only 01h su ide sector count register - suiscr 8 read/write 02h su ide sector number register - suisnr 8 read/write 03h su ide cylinder low register - suiclr 8 read/write 04h su ide cylinder high register - suichr 8 read/write 05h su ide device/head register - suidhr 8 read/write 06h su ide status register - suisr 8 write only 07h su ide command register - suicr 8 read only 07h note: in native-pci mode, the offset is relative to the pci base address registers at offset 10h and 18h in the pci configuration space. base address register at offset 10h points to channel 0. and base address register at offset 18h points to channel 1. table 37. sata control block registers in pci ide mode register name bits access bar 0/2 + offset reserved. 8 00h reserved. 8 01h su ide device control register - suidcr 8write only 02h su ide alternate status register - suiasr 8 read only 02h reserved. 8 03h note: in native-pci mode, the offset is relative to the pci base address registers at offset 14h and 1ch in the pci configuration space. base address register at offset 14h points to channel 0. and base address register at offset 1ch points to channel 1. table 38. sata dma registers in pci ide mode register name bits offset su ide channel 0 dma command register - suicdcr0 800h reserved 801h su ide channel 0 dma status register - suicdsr0 802h reserved 803h su ide channel 0 dma descriptor table pointer register - suicddtpr0 32 04h su ide channel 1 dma command register - suicdcr1 808h reserved 809h su ide channel 1 dma status register - suicdsr1 80ah reserved 80bh su ide channel 1 dma descriptor table pointer register - suicddtpr1 32 0ch note: the offset is relative to the pci base address register at offset 20h in the pci configuration space.
developer?s manual april 2004 109 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2 pci configuration registers this section defines the pci configuration registers. 5.10.2.1 su vendor id register - suvid su vendor id register bits adhere to the definitions in the pci local bus specification , revision 2.2. table 39. su vendor id register - suvid bit default description 15:00 8086h su vendor id - this is a 16-bit value assigned to intel. this register, combined with the did, uniquely identify the pci device. access type is read/write to allow the gd31244 controller to configure the register as a different vendor id to simulate the interface of a standard mechanism currently used by existing application software. pci attributes 15 12 8 4 0 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 00h - 01h
110 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.2 su device id register - sudid su device id register bits adhere to the definitions in the pci local bus specification , revision 2.2. table 40. su device id register - sudid bit default description 15:00 3200h su device id - this is a 16-bit value assigned to the sata unit. this id, combined with the vid, uniquely identify any pci device. pci attributes 15 12 8 4 0 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 02h - 03h
developer?s manual april 2004 111 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.3 su command register - sucmd su command register bits adhere to the definitions in the pci local bus specification , revision 2.2 and in most cases, affect the behavior of the pci su and devices on the pci bus. table 41. su command register - sucmd bit default description 15:10 000000 2 reserved 09 0 2 fast back to back enable - when cleared, the sata unit interface is not allowed to generate fast back-to-back cycles on its bus. ignored when operating in the pci-x mode. 08 0 2 serr# enable - when cleared, the sata unit interface is not allowed to assert serr# on the pci interface. 07 0 2 address/data stepping control - the sata unit does not support address stepping. 06 0 2 parity error response - when set, the sata unit takes normal action when a parity error is detected. when cleared, parity checking is disabled. 05 0 2 vga palette snoop enable - the sata unit interface does not perform vga palette snooping. 04 0 2 memory write and invalidate enable - when set, sata unit may generate mwi commands. when clear, sata unit use memory write commands instead of mwi. ignored when operating in the pci-x mode. 03 0 2 special cycle enable - the sata unit interface does not respond to special cycle commands in any way. not implemented and a reserved bit field. 02 0 2 bus master enable - the sata unit interface may act as a master on the pci bus. when cleared, disables the device from generating pci accesses. when set, allows the device to behave as a pci bus master. 01 0 2 memory enable - controls the sata unit response to pci memory addresses. when cleared, the sata unit does not respond to any memory access on the pci bus. the sata port registers are memory-mapped in dpa mode. 00 0 2 i/o space enable - controls the sata unit response to i/o transaction. when cleared, the sata unit does not respond to i/o access on the pci bus. the sata port registers are i/o-mapped in pci ide mode. pci attributes 15 12 8 4 0 rv rv rv rv rv rv rw rw ro rw ro rw ro rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/wri te rc = read clea r ro = read only na = not acces sib pci configuration address offset 04h - 05h
112 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.4 su status register - susr the su status register bits adhere to the pci local bus specification , revision 2.2 definitions. the read/clear bits may only be set by internal hardware and cleared by either a reset condition or by writing a 1 2 to the register. table 42. su status register - susr bit default description 15 0 2 detected parity error - set when a parity error is detected in data received by the sata unit on the pci bus even when the sucmd register parity error response bit is cleared. set under the following conditions:  write data parity error when the sata unit is a target (inbound write).  read data parity error when the sata unit is a requester (outbound read).  any address or attribute (pci-x only) parity error on bus (including one generated by sata unit). 14 0 2 serr# asserted - set when serr# is asserted on the pci bus by the sata unit. 13 0 2 master abort - set when a transaction initiated by the sata unit pci master interface, ends in a master-abort or when the sata unit receives a master abort split completion error message in pci-x mode. 12 0 2 target abort (master) - set when a transaction initiated by the sata unit pci master interface, ends in a target abort or when the sata unit receives a target abort split completion error message in pci-x mode. 11 0 2 target abort (target) - set when the sata unit interface, acting as a target, terminates the transaction on the pci bus with a target abort. 10:09 01 2 devsel# timing - these bits are read-only and define the slowest devsel# timing for a target device in conventional pci mode regardless of the operating mode (except configuration accesses). 00 2 = fast 01 2 = medium 10 2 = slow 11 2 = reserved the sata unit interface uses medium timing. 08 0 2 master parity error - the sata unit interface sets this bit under the following conditions:  the sata unit asserted perr# itself or the sata unit observed perr# asserted.  and the sata unit acted as the requester for the operation in which the error occurred.  and the sucmd register parity error response bit is set 07 1 2 (conventional mode) 0 2 (pci-x mode) fast back-to-back - the sata unit interface is capable of accepting fast back-to-back transactions in conventional pci mode when the transactions are not to the same target. since fast back-to-back transactions do not exist in pci-x mode, this bit will be forced to 0 in the pci-x mode. 06 0 2 udf supported - user definable features are not supported 05 1 2 66 mhz. capable - 66 mhz operation is supported. 04 1 2 capabilities - when set, this function implements extended capabilities. 03:00 00000 2 reserved. pci attributes 15 12 8 4 0 rc rc rc rc rc ro ro rc ro ro ro ro rv rv rv rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 06h - 07h
developer?s manual april 2004 113 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.5 su revision id register - surid revision id register bit definitions adhere to pci local bus specification , revision 2.2. table 43. su revision id register - surid bit default description 07:00 00h su revision - identifies the gd31244 controller revision number. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 08h
114 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.6 su class code register - succr class code register bit definitions adhere to pci local bus specification , revision 2.2. auto configuration software reads this register to determine the pci device function. table 44. su class code register - succr bit default description 23:16 01h base class - mass storage device 15:08 varies with external state of dpa_mode# pin sub class -  when in direct port access mode (dpa_mode# = low) = 06h - dpa mode  when in pci ide mode (dpa_mode# = high) = 01h - pci ide 07:04 varies with external state of dpa_mode# pin programming interface -  when in direct port access mode (dpa_mode# = low) = 0000 2  when in pci ide mode (dpa_mode# = high) = 1000 2 - bit 7 set identifies the pci ide device as a bus master 03:00 varies with external state of dpa_mode# pin programming interface -  when in direct port access mode (dpa_mode# = low) = 0000 2  when in pci ide mode (dpa_mode# = high) = 0101 2 - sata unit supports native-pci mode only pci attributes 23 20 16 12 8 4 0 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 09h - 0bh
developer?s manual april 2004 115 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.7 su cacheline size register - suclsr cacheline size register bit definitions adhere to pci local bus specification , revision 2.2. this register is programmed with the system cacheline size in dwords (32-bit words). the gd31244 controller may burst up to a maximum of 512 bytes per request. the cacheline size register defines burst boundaries for bus master/dma transactions generated by the gd31244 controller. for example, when a dma transaction starts on a non-aligned cacheline address, the dma controller starts the transaction by bursting from that unaligned address until the next cacheline boundary is reached. subsequent dma transactions then starts on cacheline boundaries and burst up to a maximum of 512 bytes. a value of zero means that burst transactions takes place on unaligned boundaries, transferring up to 512 bytes. table 45. su cacheline size register - suclsr bit default description 07:00 00h su cacheline size - cls specifies the system cacheline size in dwords. cls burst length 00 80h, 40h, 20h, 10h, 08h 08 80h, 40h, 20h, 10h, 08h 10 80h, 40h, 20h,10h 20 80h, 40h, 20h 40 80h, 40h 80 80h other 80h, 40h, 20h, 10h, 08h pci attributes 74 0 rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 0ch
116 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.8 su latency timer register - sult su latency timer register bit definitions apply to the pci interface. table 46. su latency timer register - sult bit default description 07:00 00h (conventional mode) 40h (pci-x mode) programmable latency timer - this field varies the latency timer for the interface from 0 to 248 clocks. the default value is 0 clocks for conventional pci mode, and 64 clocks for pci-x mode. pci attributes 74 0 rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 0dh
developer?s manual april 2004 117 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.9 su header type register - suhtr header type register bit definitions adhere to pci local bus specification , revision 2.2. this register indicates the layout of sata unit configuration space bytes 10h to 3fh. the msb indicates whether or not the device is multi-function. table 47. su header type register - suhtr bit default description 07 0 2 single function/multi-function device - identifies the gd31244 controller as a single-function pci device. 06:00 000000 2 pci header type - this bit field indicates the type of pci header implemented. the sata unit interface header conforms to pci local bus specification , revision 2.2. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 0eh
118 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.10 su bist register - subistr the su bist register bit definitions adhere to pci local bus specification , revision 2.2. table 48. su bist register - subistr bit default description 07 0 2 bist capable - this bit always returns a zero, meaning that this unit is not bist capable. 06 0 2 start bist - writing a one to this bit will invoke bist. this bit will stay high until bist is complete. 05:04 00 2 reserved 03:00 0000 2 bist completion code. pci attributes 74 0 ro rw rv rv rw rw rw rw pci configuration address offset 0fh attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible
developer?s manual april 2004 119 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.11 su base address register 0 - subar0 the su base address register 0 (subar0) defines the base i/o address of the command block registers for channel 0. table 49. su base address register 0 - subar0 bit default pci ide description 31:00 0000_01f1h base address 0 - these bits define the base address of the command block registers in pci i/o space for channel 0. dpa mode description 31:00 0000_0004h base address 0 - 4k of memory for all port registers. lower 32 bit address. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 10h - 13h
120 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.12 su base address register 1 - subar1 the su base address register 1 (subar1) defines the base i/o address of the control block registers for channel 0. table 50. su base address register 1 - subar1 bit default pci ide description 31:00 0000_03f5h base address 1 - pci ide mode: these bits define the base address of the control block registers in pci i/o space for channel 0. dpa mode 31:00 0000_0000h base address 1 - dpa mode upper 32 bits for bar0 pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 14h - 17h
developer?s manual april 2004 121 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.13 su base address register 2 - subar2 the su base address register 2 (subar2) defines the base i/o address of the command block registers for channel 1. table 51. su base address register 2 - subar2 bit default description 31:04 0000_017h base address 2 - these bits define the base address of the command block registers in pci i/o space for channel 1. 03 0 2 base address 2 - these bits define the base address of the command block registers in pci i/o space for channel 1. 02:01 00 2 reserved. 00 1 2 i/o space indicator - this bit field describes memory or i/o space base address. the sata unit in pci ide mode is mapped into i/o space, thus this bit must be one. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 18h - 1bh
122 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.14 su base address register 3 - subar3 the su base address register 3 (subar3) defines the base i/o address of the control block registers for channel 1. table 52. su base address register 3 - subar3 bit default description 31:04 0000_037h base address 3 - these bits define the base address of the control block registers in pci i/o space for channel 1. 03:02 01 2 base address 3 - these bits define the base address of the control block registers in pci i/o space for channel 1. 01 0 2 reserved. 00 1 2 i/o space indicator - this bit field describes memory or i/o space base address. the sata unit in pci ide mode is mapped into i/o space, thus this bit must be one. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 1ch - 1fh
developer?s manual april 2004 123 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.15 su base address register 4 - subar4 the su base address register 4 (subar4) defines the base i/o address for the dma functions for both channel 0 and 1. table 53. su base address register 4 - subar4 bit default description 31:04 0000_000h base address 4 - these bits define the base address of the dma registers in pci i/o space for both channel 0 and 1. 03:01 000 2 reserved. 00 1 2 i/o space indicator - this bit field describes memory or i/o space base address. the sata unit in pci ide mode is mapped into i/o space, thus this bit must be one. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv rv ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 20h - 23h
124 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.16 su base address register 5 - subar5 the su base address register 5 (subar5) defines the base i/o address for the sata superset registers. when in pci ide mode, the superset registers for each sata device on a given channel are selected by bit 4 (dev bit) of the command block device/head register. the primary and secondary channel selection is done by writing bit 16 of the su extended control and status register 0 - suecsr0 . refer to section 5.10.2.30, ?su extended control and status register 0 - suecsr0? on page 138 . in pci ide mode, the superset registers begins at offset 00h relative to this base address register. table 54. su base address register 5 - subar5 bit default description 31:01 0000_0000h base address 5 - these bits define the base address of the superset registers in pci i/o address space. 00 1 2 i/o space indicator - this bit field describes memory or i/o space base address. the sata unit in pci ide mode is mapped into i/o space, thus this bit must be one. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv rv rv rv rv rv ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 24h - 27h
developer?s manual april 2004 125 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.17 su subsystem vendor id register - susvir su subsystem vendor id register bit definitions adhere to pci local bus specification , revision 2.2. table 55. su subsystem vendor id register - susvir bit default description 15:0 8086h subsystem vendor id - this register contains the same value as the su vendor id register. pci attributes 15 12 8 4 0 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 2ch - 2dh
126 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.18 su subsystem id register - susir su subsystem id register bit definitions adhere to pci local bus specification , revision 2.2. table 56. su subsystem id register - susir bit default description 15:0 3200h subsystem id - this register contains the same value as the su device id register. pci attributes 15 12 8 4 0 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 2eh - 2fh
developer?s manual april 2004 127 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.19 su expansion rom base address register - suexrombar the internal rom controller performs an auto-detect function at the end of reset. if the external device is not detected, all bits in this register are low, effectively disabling the rom memory space. this register conforms to the pci spec for the expansion rom interface. a read following a write of ffff fffeh will return fffe 0000h. this hardwired value indicates the presence of an external 128k x 8 serial eeprom. firmware then writes a base address in bits [31:17] and the lsb is set to enable accesses. the rom can then be accessed with pci/pci-x 32-bit memory transactions to the 128k byte space starting at the base address. the expansion rom interface disconnects from data transfer after the first data phase of a burst read transaction, so burst transactions are valid but do not burst. reads are performed through this port without the use of the spi configuration registers. writes are also performed through this port, but require proper use of the spi configuration register.in pci ide mode, the superset registers begins at offset 00h relative to this base address register. the interface supports dword, word and byte accesses for both read and write transactions. the serial eeprom device is an st microelectronics m25p10 or an atmel at25f1024. the eeprom device?s spi registers can be accessed via the pci configuration space (at 90h and 94h) and provides write enable, status, and erase commands. the device is read directly using the address of this bar without having to use the spi registers. table 57. su expansion rom base address register - suexrombar bit default description 31:17 0000_0000h base address to access 128k x 8 rom memory space.. 16: 0000h rom size supported - 128 kbytes (per pci specification) 00 0/1 rom space enable. set to 1 to enable access. the reset value is 0h if an external eeprom is not detected at power-up. the reset value is 1h if an external eeprom is detected. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv rv rv rv rv rv rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 30h
128 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.20 su capabilities pointer register - su_cap_ptr the capabilities pointer register bits adhere to the definitions in the pci local bus specification , revision 2.2. this register provides an offset in this function pci configuration space for the location of the first item in the first capability list. in the case of the gd31244 controller, this is the pci-x capability. table 58. su capabilities pointer register - su_cap_ptr 36 bit default description 07:00 e0h capability list pointer - this provides an offset in this function configuration space that points to the gd31244 controller pcl-x capability. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 34h
developer?s manual april 2004 129 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.21 su expansion rom base address - suexrom the internal rom controller performs an auto-detect function at the end of reset. if the external device is not detected, all bits in this register are low, effectively disabling the rom memory space. this register conforms to the pci spec for the expansion rom interface. a read following a write of ffff fffeh will return fffe 0000h. this hardwired value indicates the presence of an external 128k x 8 serial eeprom. firmware then writes a base address in bits [31:17] and the lsb is set to enable accesses. the rom can then be accessed with pci/pci-x 32-bit memory transactions to the 128k byte space starting at the base address. the expansion rom interface disconnects from data transfer after the first data phase of a burst read transaction, so burst transactions are valid but do not burst. reads are performed through this port without the use of the spi configuration registers. writes are also performed through this port, but require proper use of the spi configuration register. the interface supports dword, word and byte accesses for both read and write transactions. the serial eeprom device is an st microelectronics m25p10 or an atmel at25f1024. the eeprom device?s spi registers can be accessed via the pci configuration space (at 90h and 94h) and provides write enable, status, and erase commands. the device is read directly using the address of this bar without having to use the spi registers. table 59. su expansion rom base address - suexrom 36 bit default description 31:17 0000_0000h base address to access 128k x 8 rom memory space. 16:1 0000 rom size supported - 128kbytes (per pci spec) 00 or 1 rom space enable: set to 1 to enable access. the reset value is 0h if an external eeprom is not detected at the power-up. the reset value is 1h if an external eeprom is detected. pci attributes 28 24 20 16 12 84 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 34h
130 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.22 su interrupt line register - suilr su interrupt line register bit definitions adhere to pci local bus specification , revision 2.2. this register identifies the system interrupt controller's interrupt request lines which connect to the device's pci interrupt request lines (as specified in the interrupt pin register). in a pc environment, for example, the register values and corresponding connections are:  0 (00h) through 15 (0fh) correspond to irq0 through irq15  16 (10h) through 254 (feh) are reserved  255 (ffh) indicates unknown or no connection the operating system or device driver may examine each device interrupt pin and interrupt line register to determine which system interrupt request line the device uses to issue requests for service. table 60. su interrupt line register - suilr bit default description 07:00 0eh interrupt assigned - system-assigned value identifies which system interrupt controller interrupt request line connects to the device's pci interrupt request lines (as specified in the interrupt pin register). pci attributes 74 0 rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 3ch
developer?s manual april 2004 131 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.23 su interrupt pin register - suipr su interrupt pin register bit definitions adhere to pci local bus specification , revision 2.2. this register identifies the interrupt pin the sata unit uses. table 61. su interrupt pin register - suipr bit default description 07:00 01h interrupt used - this register tells which interrupt pin the sata unit uses. a value of 01h corresponds to inta# . pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 3dh
132 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.24 su minimum grant register - sumgnt su minimum grant register bit definitions adhere to pci local bus specification , revision 2.2. this register specifies the burst period the device requires in increments of eight pci clocks. this register and the su maximum latency register are information-only registers which the configuration uses to determine how often a bus master typically requires access to the pci bus and the duration of a typical transfer when it does acquire the bus. this information is useful in determining the values to be programmed into the bus master latency timers and in programming the algorithm to be used by the pci bus arbiter. table 62. su minimum grant register - sumgnt bit default description 07:00 10h minimum grant specifies, in 0.25 s increments, the minimum burst period the core needs. the core does not have any special min_gnt requirements. in general, the more channels active, the worse the bus latency and the shorter the burst cycle. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 3eh
developer?s manual april 2004 133 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.25 su maximum latency register - sumlat su maximum latency register bit definitions adhere to pci local bus specification , revision 2.2. this register specifies how often the device needs to access the pci bus in increments of eight pci clocks. this register and the minimum grant register are information-only registers which the configuration uses to determine how often a bus master typically requires access to the pci bus and the duration of a typical transfer when it does acquire the bus. this information is useful in determining the values to be programmed into the bus master latency timers and in programming the algorithm to be used by the pci bus arbiter. table 63. su maximum latency register - sumlat bit default description 07:00 01h maximum latency specifies how often the core needs to gain access to the pci bus. the value is specified in 0.25 s increments and assumes a 33 mhz clock. a value of 0fh means the core needs to gain access to the pci bus every 130 pci clocks, expressed as 3.75 s in this register. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 3fh
134 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.26 spi command register - spicmdr serial peripheral interface (spi) command register definition is described in table 64 . the host writes the command type to the command register after setting up the control and data registers as necessary. a write to this register initiates the command. table 64. spi command register - spicmdr bit default description 7:0 00 expansion rom spi interface command type. a write to this initiates the command. the status register bit d0 must be polled to determine when the command is complete. 06h = wren (write enable) 04h = wrdi (write disable) 01h = wrsr (write status) 02h = no action (spi program command) 52h = sect_erase (sector erase) 62h = chip_erase (all sector erase) 05h = rdsr (read status) 03h = no action (spi read command) others = no action pci attributes 74 0 rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 90
developer?s manual april 2004 135 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.27 spi control register - spicntr serial peripheral interface (spi) control register definition of this 8 bit register is described in table 65 . the host writes the control register to specify the sectors of the serial eeprom to erase. note that the set of all write pairs must be proceeded by one of the two erase commands with the sectors specified in the control register. table 65. spi control register - spicntr bit default description 15:10 00h reserved. 9:8 00b sector address [1:0]. selects 1 of 4 sectors for the sector erase command 52h. it must be set prior or simultaneously with writing the sect_erase command to the spi command register. pci attributes 15 12 8 rv rv rv rv rv rv rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 91
136 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.28 spi status register - spistatr serial peripheral interface (spi) status register definition of this 8 bit register is described in table 66 . writes to the serial device must be performed by a special device driver that polls the spi status register to determine when the write is done. when high indicates that the last command has been transferred to the serial prom successfully. a low indicates that the device is not ready. table 66. spi status register - spistatr bit default description 23:17 00h reserved. 16 0b command done. when high indicates that the last command has been communicated to the serial device. it does not mean the device is ready. the rdsr command must be issued to determine this. pci attributes 15 12 8 rv rv rv rv rv rv rv rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 92
developer?s manual april 2004 137 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.29 spi data register - spidatr serial peripheral interface (spi) data register definition of this 32 bit register is described in table 67 . this is a multifunction register used by three commands. for the rdid command, it is a read-only register with manufacturer?s id and device id in the upper and lower bytes respectively. for the wrsr/rdsr commands, lower byte is a write/read register with the above bit definitions. wpen is not applicable if the serial eeprom device has its write protect pin wpb inactive high. refer to the serial eeprom device specification for how to use these bits. table 67. spi data register - spidatr bit default description 31:16 0000h reserved 15:8 00h device id for the rdid command. 7:0 this register contains data to be written to the eeprom on a wrsr command and the data read from the eeprom on rdsr and rdid commands. wrsr : prior to a write of wrsr command to the spi command register, this field should be written. interpretation of these bits is as follows: 7: wpen - determines write protection state of the eeprom with wen 6: reserved, write as 0 5: reserved, write as 0 4: reserved, write as 0 3: bp1 - with bp0, selects the locked out sectors within the eeprom. 2: bp0 - 00=no protection, 01=sector 4 protected, 10=sectors 3 & 4 protected, 11=all sectors protected. 1: wen - write as 0, this is a read-only bit in the eeprom 0: rdy# - write as 0, this is a read-only bit in the eeprom rdsr : after completion of a rdsr command, this field contains the value of the eeproms status register. interpretation of these bits is as follows: 7: wpen - determines write protection state of the eeprom with wen 6: reserved, low when the eeprom is not in an internal write cycle 5: reserved, low when the eeprom is not in an internal write cycle 4: reserved, low when the eeprom is not in an internal write cycle 3-2: bp1-bp0 selects which eeprom sectors are protected. 00=no protection, 01= sector 4 is protected, 10=sectors 3&4 are protected, 11=sectors 1-4 are protected. 1: wen - determines write protection state of the eeprom with wpen 0: rdy# - rdid : after completion of a rdid command, this field contains the 8-bit manufacturer id as read from the eeprom. for the atmel at25f1024, this should be 1fh. pci attribute s 28 24 20 16 12 84 0 31 rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv ro ro ro ro ro ro ro ro ro ro ro ro ro ro rw ro rw ro rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 94
138 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.30 su extended control and status register 0 - suecsr0 this register is used to control the led functionality and also to select the superset registers when in pci ide mode. table 68. su extended control and status register 0 - suecsr 0 bit default description 31:29 000 2 reserved 28 1 2 led0 only:  when this bit is set all sata ports? activity are reflected on led0 only. other leds are not used.  in pci ide mode, when this bit is cleared, led0 reflects the activity for channel 0 (port 0 and port 1) and led1 reflects the activity for channel 1 (port 2 and port 3).  in dpa mode, when this bit is cleared, led0, led1, led2, and led3 reflect the activity for port 0, port 1, port 2, and port 3 respectively. 27:17 000h reserved. 16 0 2 bar 5 (superset features) secondary select:  in pci ide mode this bit is a read/write bit and is used to select between the primary and secondary channel. when set, the secondary channel is selected.  in dpa mode, this bit is a reserved bit. 15:03 0 2 reserved. 02 0 2 register protect.  pci ide mode: register protect. set this bit to 1 to enable writing the device id, vendor id, class code, subclass code, interface code registers and bits 27:24 and 1:0 of this register. set to 0 to disable.  dpa mode: register protect. set this bit to 1 to enable writing the device id, vendor id, class code, subclass code, interface code registers and bits 27:24 and 1:0 of this register. set to 0 to disable. 01 0 2  pci ide mode: pci clock domain reset. write a 1 to this register to reset the host clk domain. write a 0 for normal operation. this bit is write protected by setting bit 2 and write enabled by clearing bit 2.  dpa mode: pci clock domain reset. write a 1 to this register to reset the hostclk domain. write a 0 for normal operation. this bit is write protected by setting bit 2 and write enabled by clearing bit 2. 00 0 2  pci ide mode: sata clock domain reset. write a 1 to this register to reset the sclk domain. write a 0 for normal operation. this bit is write-protected by setting bit 2 and write enabled by clearing bit 2.  dpa mode: sata clock domain reset. write a 1 to this register to reset the sclk domain. write a 0 for normal operation. this bit is write-protected by setting bit 2 and write enabled by clearing bit 2. pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rv rw rv rv rv rv rv rv rv rv rv rv rv rw rv rv rv rv rv rv rv rv rv rv rv rv rv rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set wo = write only rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 98h - 9bh
developer?s manual april 2004 139 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.31 su dma control status register- sudcscr the control/status signals below are common to all four dma channels or affect the master transaction controller. control/status signals that are individual to each port are contained in the bus master register set. see the description for the dma configuration register. cache line alignment is enabled in the dma write (from controller to memory) direction unless the cache line size register is programmed with a value of 00h or an illegal value, in which case it is disabled. the burst length can only take values greater than the cache line size. if an illegal value is programmed for the burst length, the controller will internally use 40h for burst length, unless the cache line size is programmed for 80h, in which case the controller will use 80h. the burst length register is read/write and always returns the write value; if an illegal value is written, the corrected internal value will not be visible on read back. cache line alignment is normally disabled in the dma read direction. it may be enabled by setting bit 1. table 69. su dma control status register - sudcscr 0 bit default description 31:29 000 2 reserved 28 1 2 reserved 27 1 when high, enables resets to the pci/pci-x core master transaction queue when bit 19 of the pci-x capability status register is cleared. this is necessary to recover from split responses that never get completed due to a corrupted tag. bit 19 of the pci-x capability status register may also be set by an unexpected split completion due to a corrupted requester id for a split transaction that is not initiated by this master. clearing the queue in this case will not hurt even though the queue will have been correct. for test purposes only; set only when there is no pci traffic. 26:16 0 reserved 15:08 80h dma burst length: bus master transaction burst length: this register contains the dma burst length value in [15:8]. this value sets the nominal pci transaction burst length, other conditions permitting. the resolution is 1 dword so the maximum in each case is 512 bytes and the minimum is 32 bytes. the descriptor table defines the length of each physical region using physical region descriptors. the controller transfers each physical region in individual burst transactions. 07:03 0 2  reserved. 02 0 2 block command disable. set high to disable the dma engine from utilizing command types mwi and mrm in pci mode only. this bit does not effect pci-x mode. 01 0 2 dma write cache align enable. when high, the controller will align with the cacheline address before doing ?burst length? transactions, total length permitting. when low, the controller will start with ?burst length? transaction, regardless of start address, total length permitting. 00 0 2 dma read cache align enable. when high, the controller will align with the cacheline address before doing ?burst length? transactions, total length permitting. when low, the controller will start with ?burst length? transaction, regardless of start address, total length permitting. pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rv rw rw rv rv rv rv rv rv rv rv rv rv rw rw rw rw rw rw rv rw rw rv rv rv rv rv rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set wo = write only rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset a0h - a3h
140 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.32 su dummy register sudr su dummy register sudr contains dummy bits for scratchpad read/write. table 70. su dummy register - sudr bit default description 31:00 0000_0000h dummy bits for scratch pad reads and writes. pci attribute s 28 24 20 16 12 84 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset a4 - a7
developer?s manual april 2004 141 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.33 su interrupt status register suisr this register reports interrupts generated by the sata ports. software must clear any pending interrupt at the appropriate sources. the ide interrupts (bits 31, 23, 15, 7) are cleared by reading the sata port command block status register. other pending interrupts in this register are generated by the superset error registers and must be cleared by writing 1s to the superset error registers. these registers located in configuration space for pci ide mode and in the memory space for dpa mode. table 71. su interrupt status register - suisr bit default pci ide description 31:24 0 port 4 interrupt status. same as bits 7:0 corresponding to port 4 23:16 0 port 3 interrupt status. same as bits 7:0 corresponding to port 3 15:8 0 port 2 interrupt status. same as bits 7:0 corresponding to port 3 7 0 port 1 ata interrupt 6 0 port 1 crc error. this is the latched crc error from the previous data transfer. 50 port 1 data integrity error. a crc or disparity error was detected by the host, or an rerr was returned by the device in response to a data fis transfer. 4 0 port 1 unrecognized fis reception. an unrecognized fis type was received. 3 0 port 1 rerr received. an rerr was received in response to a data transfer. 2 0 port 1 fifo error. a fifo error occurred during a data fis transfer 10 port 1 phy went from not-ready to ready steady state. the phy became ready and oob was completed. 00 port 1 phy ready change-of-state. the phy went from ready to not ready or from not-read to ready. pci dpa mode description 31:00 0000_0000 reserved - note: bits are read only in dpa mode pci attribute s 28 24 20 16 12 84 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset a8-ab pci ide
142 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.34 su interrupt mask register suimr this register masks interrupts pending in the interrupt pending register. each bit in the interrupt mask register corresponds to a bit in the interrupt pending register. writing a one to a bit in this register enables the interrupt source bit. these registers located in configuration space in pci ide mode and in the common space in dpa mode. these registers are located in configuration space for pci ide mode and in the memory space for dpa mode. table 72. su interrupt mask register - suimr bit default pci ide description 31:24 0 port 4 interrupt mask. same as bits 7:0 corresponding to port 4 23:16 0 port 3 interrupt mask. same as bits 7:0 corresponding to port 3 15:8 0 port 2 interrupt masks. same as bits 7:0 corresponding to port 3 70 port 1 interrupt mask - when high enables port 1 crc interrupts. when low port 1 crc interrupts are disabled. 60 when high enables port 1 crc error to generate and interrupt. when low this interrupt source is re disabled. 50 when high enables port 1 data integrity error to generate and interrupt. when low this interrupt source is disabled. 40 when high enables port 1 unrecognized fis reception error to generate and interrupt. when low this interrupt source is disabled 30 when high enables port 1 rerr received error to generate and interrupt. when low this interrupt source is disabled 20 when high enables port 1 fifo error to generate and interrupt. when low this interrupt source is disabled 10 when high enables port 1 going ready to generate and interrupt. when low this interrupt source is disabled. 00 when high enables port 1 going ready to generate and interrupt. when low this interrupt source is disabled. pci dpa mode description 31:00 0000_0000 reserved pci attribute s 28 24 20 16 12 84 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset ac-afh pci ide
developer?s manual april 2004 143 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.35 su transaction control sutcr this register provides primary transaction control. the bits in the register should be set at reset values only. table 73. su transaction control register - sutcr bit default description 31 0 target read delayed transaction for i/o and non-prefetchable regions discarded. write 1 to clear. 30 0 target read delayed transaction for all regions discarded. write 1 to clear. 29 0 target (i/o and memory) read delayed/split at time out/immediately (default time out) 28 0 target (i/o and memory) read delayed/split at time out/immediately (default time out) 27 0 target (i/o and memory) read delayed /split or retry select (if application interface is not ready) 0 = delayed/split transaction 1 = retry transaction (always immediate retry, no at_req to application) 26 0 target (i/o and memory) read target abort enable (if application interface is not ready at the latency time out) 25 0 target (i/o) write split enable (at time out/immediately; default time out) 24 0 target (i/o) write split enable (if application interface is not ready) 23 0 target (read/write) master abort enable; check at the start of each transaction. 22:20 0h target subsequent latency time out enable: 0 = 8, 1 to 7. 19:16 0 target initial latency time-out in pci mode: 0= 16, 8 to 15 15:4 000h programmable boundary enable to disconnect/prefetch for target burst read cycles to prefetchable region in pci. a value of 1 indicates end of boundary (64kb down to 16 bytes). 30 disconnect/prefetch to prefetchable memory regions enable. prefetchable memory regions are always disconnected on a region boundary. non-prefetchable regions for pci are always disconnected on the first transfer. 20reserved 10 target split write control 0 = blocks all requests except pmw 1 = blocks all requests including pmw until split completion occurs. 0 0 cr_lat_timer_disable pci attribute s 28 24 20 16 12 84 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset c0-c3
144 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.36 su target split completion message enable register sutscmer this register contains any split completion error messages received (scm bit = 1 and sce bit = 1). bit 29 of the pci configuration status register is set when a split completion error message is received. table 74. su target split completion message enable register- sutscmer bit default description 31:0 0 target read delayed transaction for i/o and non-prefetchable regions discarded. write 1 to clear. pci attribute s 28 24 20 16 12 84 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset c4-c7
developer?s manual april 2004 145 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.37 su target delayed/split request pending register sudrpr this register indicates if any target/delayed split request sequences are pending. table 75. su target split completion message enable register- sutscmer bit default description 31:0 0 target delayed/split request pending sequences. pci attribute s 28 24 20 16 12 84 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset c8-cb
146 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.38 su transaction control 2 register sutc2r this register provides secondary transaction control. table 76. su transaction control 2 register- sutc2r bit default description 31 1 master request (memory read) byte count/byte enable select.  0 = byte enables valid. in pci mode, a burst transaction cannot be performed using memory read command 6h.  1 = dword byte count valid (default). in pci mode, the memory read byte enables are automatically generated by the core. 30 0 master request (i/o and cr cycles) byte count/byte enable select.  0 = byte enables valid  1 = dword byte count valid. 29 0 master (retry) deferred write enable (allows read requests to pass). pci mode i/o and memory transactions only.  0 = new read requests are not accepted until the current write cycle completes. reads cannot pass writes.  1 = new read requests are accepted, even when there is a write cycle pending. reads can pass writes. 28 0 master (retry) deferred read enable (allows read/write requests to pass.) pci mode i/o and memory transactions only.  0 = new read/write requests are not accepted until the current read cycle completes. read/write requests cannot pass reads.  1 = new read/write requests are accepted, even when there is a read cycle pending. read/write requests can pas reads. 27 0 master i/o deferred/split request outstanding maximum count  0 =cch[26:24]  1 = 1 pci attribute s 28 24 20 16 12 84 0 31 rw rw rw rw rw rw rw rw ro ro ro ro ro ro ro ro ro ro rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset cc-cf
developer?s manual april 2004 147 intel ? 31244 pci-x to serial ata controller programming interface 26:24 010b master deferred read request outstanding max count. pci mode only. bits 26:24=000b, max# sac cycles=8, max# dac cycles=4 bits 26:24=001b, max# sac cycles=1, max# dac cycles=0 bits 26:24=010b, max# sac cycles=2, max# dac cycles=1 bits 26:24=011b, max# sac cycles=3, max# dac cycles=1 bits 26:24=100b, max# sac cycles=4, max# dac cycles=2 bits 26:24=101b, max# sac cycles=5, max# dac cycles=2 bits 26:24=110b, max# sac cycles=6, max# dac cycles=3 bits 26:24=111b, max# sac cycles=7, max# dac cycles=3 for the pci-x maximum outstanding split transactions, refer to cre0[22:20]. 23:16 0000000b target/master error sequence number. 15 0 target error command indication 0 = delayed/split 1 = others. 14 0 target/master error indication 0 = target 1 = master 13 0 target/master system error. this bit is set whenever atm_serr_o is active. write one to clear. 12 0 target/master data perr# error status. this bit is set whenever atm_data_perr_o is active. write one to clear. 11 0 target/master address perr# error status. this bit is set whenever atm_add_perr_o is active. write one to clear. 10:9 00 reserved. 80 target illegal i/o dword byte combinations detected. write one to clear. 70 target illegal i/o dword byte detection enable. allows error to set serr if serr is enabled, also sets bit 8 above. 60reserved 50 target i/o delayed split request outstanding maximum count: 0 = cch[4:0] 1 = 1. 4:0 0001 target delayed/split request outstanding maximum count: 0 = 32, 1 to 31. table 76. su transaction control 2 register- sutc2r bit default description pci attribute s 28 24 20 16 12 84 0 31 rw rw rw rw rw rw rw rw ro ro ro ro ro ro ro ro ro ro rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset cc-cf
148 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.39 su master deferred/split sequence pending register - sumdspr when a split completion error message is received (scm bit = 1 and sce bit = 1), the message value is written to this register. bit 29 of the pci-x status register is set when a split completion error message is received. table 77. su master split completion message received with error message register - sumscmremr bit default description 31:00 0000_0000h master deferred/split sequence pending. pci a ttributes 28 24 20 16 12 8 4 0 31 rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset d0-d3h
developer?s manual april 2004 149 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.40 su master split completion message received with error message register - sumscmremr when a split completion error message is received (scm bit = 1 and sce bit = 1), the message value is written to this register. bit 29 of the pci-x status register is set when a split completion error message is received. table 78. su master split completion message received with error message register - sumscmremr bit default description 31:00 0000_0000h split completion error message value - when a split completion error message (scm bit = 1 and sce bit = 1) is received, the message value is written into this register. this register is cleared by writing 1s to all bits. pci a ttributes 28 24 20 16 12 8 4 0 31 rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc rc attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset d4h - d7h
150 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.41 su arbiter control - suacr this register provides master arbiter control. table 79. su arbiter control register suacr bit default description 31:30 00b master arbiter control, msi request.used only for fixed priority (bit 25 set to 1). 00 = highest priority 01 = medium priority 10 = lowest priority 00 = reserved 29:28 00b master arbiter control, target split completion. used only for fixed priority (bit 25 set to 1). 00 = highest priority 01 = medium priority 10 = lowest priority 00 = reserved 27:26 00b target split completion, new request, deferred read, deferred write. used only for fixed priority (bit 25 set to 1). 00 = highest priority 01 = medium priority 10 = lowest priority 00 = reserved 25 0 fixed/round robin priority selector. 1 = fixed 0 = round robin 24:18 0000000b reserved 17 0 master retry aborted. write one to clear. 16 0 master trdy time out aborted. write one to clear. 15:8 0 master retry value: 0 = infinite 1 to ffh. 7:0 00h master trdy time out value: 0 = disabled 1 to ffh. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw ro ro ro ro ro ro ro rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset d8 - dc
developer?s manual april 2004 151 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.42 su pci-x capability identifier register - supci-x_cap_id the capability identifier register bits adhere to the definitions in the pci local bus specification , revision 2.2. this register in the pci extended capability header identifies the type of extended capability contained in that header. in the case of the gd31244 controller, this is the pci-x extended capability with an id of 07h as defined by the pci-x addendum to the pci local bus specification, revision 1.0a. table 80. su pci-x_capability identifier register - supci-x_cap_id bit default description 07:00 07h cap_id - this field with its? 07h value identifies this item in the linked list of extended capability headers as being the pci-x capability registers. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset e0h
152 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.43 su pci-x next item pointer register - supci-x_next_item_ptr the next item pointer register bits adhere to the definitions in the pci local bus specification , revision 2.2. this register describes the location of the next item in the function capability list. for the gd31244 controller, the next capability (pm capability list) is located at off-set e8h. table 81. su pci-x next item pointer register - supci-x_next_item_ptr bit default description 07:00 e8h next_ item_ pointer - this field provides an offset into the function configuration space pointing to the next item in the function capability list which is the pm capability header residing at e8h. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset e1h
developer?s manual april 2004 153 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.44 su pci-x command register - supcixcmd this register controls various modes and features of sata unit when operating in the pci-x mode. table 82. su pci-x command register - supcixcmd bit default description 15:7 000000000 2 reserved. 6:4 011 2 maximum outstanding split transactions - this register sets the maximum number of split transactions the device is permitted to have outstanding at one time. register maximum outstanding 0 1 1 2 2 3 3 4 4 8 5 12 616 7 32 3:2 00 2 maximum memory read byte count - this register sets the maximum byte count the device uses when initiating a sequence with one of the burst memory read commands. register maximum byte count 0 512 1 1024 2 2048 3 4096 11 2 enable relaxed ordering - when this bit is set the gd31244 controller will set the relaxed ordering bit in the requester attributes of transactions it initiates. note that this bit does not have any effect on msi transactions, as an msi transaction is not permitted to set the relaxed ordering bit in its attributes. 00 2 data parity error recovery enable - the device driver sets this bit to enable the device to attempt to recover from data parity errors. when this bit is 0 and the device is in pci-x mode, the device asserts p_serr# (when enabled) whenever the master data parity error bit (status register, bit 8) is set. note: this bit has no effect when the gd31244 controller encounters a data parity error when mastering an msi transaction. pci attributes 15 12 8 4 0 rv rv rv rv rv rv rv rv rv rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset e2h - e3h
154 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.45 su pci-x status register - supcixsr this register identifies the capabilities and current operating mode of sata unit when operating in the pci-x mode. table 83. su pci-x status register - supcixsr (sheet 1 of 2) bit default description 31:30 00 2 reserved 29 0 2 received split completion error message - this bit is set when the device receives a split completion message with the split completion error attribute bit set. once set, this bit remains set until software writes a 1 to this location. 0 = no split completion error message received. 1 = a split completion error message has been received. 28:26 001 2 designed maximum cumulative read size (dmcrs) - the value of this register depends on the setting of the maximum memory read byte count field of the pcixcmd register: dmcrs max adqs maximum memory read byte count register setting 1 16 512 (default) 2 32 1024 2 32 2048 232 4096 25:23 011 2 designed maximum outstanding split transactions - the gd31244 controller may have up to four outstanding split transactions. 22:21 00 2 designed maximum memory read byte count - the gd31244 controller may generate memory reads with byte counts up to 512 bytes. 20 0 2 device complexity - gd31244 controller is a simple device. 0 = simple 1 = complex 19 0 2 unexpected split completion - this bit is set when an unexpected split completion with this device requester id is received. once set, this bit remains set until software writes a 1 to this location. 0 = no unexpected split completion has been received. 1 = an unexpected split completion has been received. 18 0 2 split completion discarded - this bit is set when the device discards a split completion because the requester does not accept it. see section 5.4.4 of the pci-x addendum to the pci local bus specification, revision 1.0a for details. once set, this bit remains set until software writes a 1 to this location. 0 = no split completion has been discarded. 1 = a split completion has been discarded. note: the gd31244 controller will not set this bit since there is no inbound address responding to inbound read requests with split responses (memory or register) that has ?read side effects.? 17 1 2 gd31244 controller is a 133 mhz capable device. pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rc ro ro ro ro ro ro ro ro ro rc ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset e4h-e7h
developer?s manual april 2004 155 intel ? 31244 pci-x to serial ata controller programming interface 16 32bitpci# the gd31244 controller may be configured to identify the add-in card to the system as 64-bit or 32-bit wide through a user-configurable strap ( 32bitpci# ). this strap will by default identify the gd31244 controller subsystem as 64-bit unless the user attaches the appropriate pull-down resistor to the strap. 0 = the bus is 32 bits wide. 1 = the bus is 64 bits wide. 15:8 ffh bus number - this register is read for diagnostic purposes only. it indicates the number of the bus segment for the device containing this function. the function uses this number as part of its requester id and completer id. for all devices other than the source bridge, each time the function is addressed by a configuration write transaction, the function must update this register with the contents of ad[7:0] of the attribute phase of the configuration write, regardless of which register in the function is addressed by the transaction. the function is addressed by a configuration write transaction when all of the following are true: 1. the transaction uses a configuration write command. 2. idsel is asserted during the address phase. 3. ad[1:0] are 00b (type 0 configuration transaction). 4. ad[10:08] of the configuration address contain the appropriate function number. 7:3 1fh device number - this register is read for diagnostic purposes only. it indicates the number of the device containing this function, i.e., the number in the device number field (ad[15:11]) of the address of a type 0 configuration transaction that is assigned to the device containing this function by the connection of the system hardware. the system must assign a device number other than 00h (00h is reserved for the source bridge). the function uses this number as part of its requester id and completer id. each time the function is addressed by a configuration write transaction, the device must update this register with the contents of ad[15:11] of the address phase of the configuration write, regardless of which register in the function is addressed by the transaction. the function is addressed by a configuration write transaction when all of the following are true: 1. the transaction uses a configuration write command. 2. idsel is asserted during the address phase. 3. ad[1:0] are 00b (type 0 configuration transaction). 4. ad[10:08] of the configuration address contain the appropriate function number. 2:0 000 2 function number - this register is read for diagnostic purposes only. it indicates the number of this function; i.e., the number in the function number field (ad[10:08]) of the address of a type 0 configuration transaction to which this function responds. the function uses this number as part of its requester id and completer id. table 83. su pci-x status register - supcixsr (sheet 2 of 2) bit default description pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rc ro ro ro ro ro ro ro ro ro rc ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset e4h-e7h
156 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.46 su pm capability identifier register - supm_cap_id the capability identifier register bits adhere to the definitions in the pci local bus specification , revision 2.2. this register in the pci extended capability header identifies the type of extended capability contained in that header. in the case of the gd31244 controller, this is the pci bus power management extended capability with an id of 01h as defined by the pci bus power management interface specification , revision 1.1. table 84. su pm_capability identifier register - supm_cap_id bit default description 07:00 01h cap_id - this field with its? 01h value identifies this item in the linked list of extended capability headers as being the pci power management registers. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset e8h
developer?s manual april 2004 157 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.47 su pm next item pointer register - supm_next_item_ptr the next item pointer register bits adhere to the definitions in the pci local bus specification , revision 2.2. this register describes the location of the next item in the function capability list. for the gd31244 controller, the next capability (msi capability list) is located at offset f0h. table 85. su pm next item pointer register - supm_next_item_ptr bit default description 07:00 f0h next_ item_ pointer - this field provides an offset into the function configuration space pointing to the next item in the function capability list which in the gd31244 controller is the msi capability header residing at f0h. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset e9h
158 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.48 su power management capabilities register - supmcr power management capabilities bits adhere to the definitions in the pci bus power management interface specification , revision 1.1. this register is a 16-bit read-only register which provides information on the capabilities of the sata unit function related to power management. table 86. su power management capabilities register - supmcr bit default description 15:11 00000 2 pme_support - this function is not capable of asserting the pme# signal in any state, since pme# is not supported by the gd31244 controller. 10 0 2 d2_support - this bit is set to 0 2 indicating that the gd31244 controller does not support the d2 power management state 90 2 d1_support - this bit is set to 0 2 indicating that the gd31244 controller does not support the d1 power management state 8:6 000 2 aux_current - this field is set to 000 2 indicating that the gd31244 controller has no current requirements for the 3.3vaux signal as defined in the pci bus power management interface specification , revision 1.1 51 2 dsi - this field is set to 1 2 meaning that this function will require a device specific initialization sequence following the transition to the d0 uninitialized state. 40 2 reserved. 30 2 pme clock - since the gd31244 controller does not support pme# signal generation. 2:0 010 2 version - setting these bits to 010 2 means that this function complies with pci bus power management interface specification , revision 1.1 pci attributes 15 12 8 4 0 ro ro ro ro ro ro ro ro ro ro ro rv ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset eah - ebh
developer?s manual april 2004 159 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.49 su power management control/status register - supmcsr power management control/status bits adhere to the definitions in the pci bus power management interface specification , revision 1.1. this 16-bit register is the control and status interface for the power management extended capability. note: 1. d0 ? gd31244 supports d0 state and (as in all pci compliant devices) will be in the d0 state before use. after power on reset or transitioning from d3 hot gd31244 is in d0 in an uninitialized state. once initialized it is in a d0 active date. 2. d3 ? gd31244 supports d3 state. the d3 state has two variants d3 hot and d3 cold . d3 hot the device has vcc applied to it and d3 cold .the device has vcc removed from it. removing power will place the device in d3 cold state. from a d3 cold state the device can transition to a d0 uninitialized state by reapplying vcc and asserting a pci rst#. d3 hot can be transitioned to an uninitialized d0 state through the software writing to the pmscr register or having pci rst# asserted. d3 hot respond to configuration space accesses as long as their power and clock are supplied. the d3 hot device can go into a d0 uninitialized state by performing a soft reset (without pci rst# being asserted). 3. refer to the pci bus power management interface specification for more information on the power management states. table 87. su power management control/status register - supmcsr bit default description 15 0 2 pme_status - this function is not capable of asserting the pme# signal in any state, since pme# # is not supported by the gd31244 controller. 14:9 00h reserved 80 2 pme_en - this bit is hardwired to read-only 0 2 since this function does not support pme# generation from any power state. 7:2 000000 2 reserved 1:0 00 2 power state - this 2-bit field is used both to determine the current power state of a function and to set the function into a new power state. the definition of the values is: 00 2 - d0 01 2 - d1 (unsupported) 10 2 - d2 (unsupported) 11 2 - d3 hot the gd31244 controller supports only the d0 and d3 hot states. pci attributes 15 12 8 4 0 ro rv rv rv rv rv rv ro rv rv rv rv rv rv rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset ech - edh
160 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.50 su msi capability identifier register - sumsi_cap_id the msi capability identifier register bits adhere to the definitions in the pci local bus specification , revision 2.2. this register in the pci extended capability header identifies the type of extended capability contained in that header. the value of 05h in this field identifies the function as message signaled interrupt capable. table 88. su msi capability identifier register - sumsi_cap_id bit default description 07:00 05h msi_cap_id - this field with its 05h value identifies this item in the linked list of extended capability headers as being the message signaled interrupt capability item. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset f0h
developer?s manual april 2004 161 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.51 su msi next item pointer register - sumsi_next_ptr the next item pointer register bits adhere to the definitions in the pci local bus specification , revision 2.2. this register describes the location of the next item in the function capability list. for the gd31244 controller, this the final capability list, and hence, this register is set to 00h. table 89. su msi next item pointer register - sumsi_next_ptr bit default description 07:00 00h msi_next_ pointer - this field provides an offset into the function configuration space pointing to the next item in the function capability list. since the msi capabilities are the last in the linked list of extended capabilities in the gd31244 controller, the register is set to 00h. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset f1h
162 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.52 su msi message control register - sumsi_message_control the message control register provides system software control over msi. after reset, msi is disabled. system software is permitted to modify the message control register read/write bits and fields while a device driver is not permitted to modify them. table 90. su msi message control register - sumsi_message_control bit default description 15:8 00h reserved 71 2 64-bit address support - this field is set to 1 2 indicating that the gd31244 controller is capable of generating a 64-bit message address. 6:4 000 2 multiple message enable - system software writes to this field to indicate the number of messages allocated to the gd31244 controller. while, the gd31244 controller requests two messages, it is possible that system software will only allocate one message. the device hardware is designed to handle both cases. note: the maximum value assigned to this field should be 2 or less. 3:1 010 2 multiple message capable - this field is set to 010 2 indicating that the gd31244 controller may issue up to four unique interrupt messages. note: the host can only program the multiple message enable field with (0, 1, or 2). 000 2 = 1 001 2 = 2 010 2 = 4 011 2 = 8 100 2 = 16 101 2 = 32 110 2 = reserved 111 2 = reserved 00 2 msi enable - setting this bit enables the gd31244 controller msi functionality and disables the use of the p_inta# interrupt output for gd31244 controller interrupts. pci attributes 15 12 8 4 0 rv rv rv rv rv rv rv rv ro rw rw rw ro ro ro rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset f2h - f3h
developer?s manual april 2004 163 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.53 su msi message address register - sumsi_message_address the message address register specifies the dword aligned address for the msi memory write transaction. the value is set by system software during initialization. table 91. su msi message address register - sumsi_message_address bit default description 31:2 00000000h message address - dword aligned message address. this value is set by system software. 1:0 00 2 reserved. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset f4h- f7h
164 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.54 su msi message upper address register - sumsi_message_upper_address the message upper address register is set during system initialization when system software wishes to place the msi address location above the 4 g address boundary. when this register is set to a non-zero value, the gd31244 controller will generate a dual address cycle for the msi write command and will use the contents of this register as the upper 32-bits of that address. table 92. su msi message upper address register - sumsi_message_upper_address bit default description 31:00 00000000h message address - upper message address. this value is set by system software. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset f8h - fbh
developer?s manual april 2004 165 intel ? 31244 pci-x to serial ata controller programming interface 5.10.2.55 su msi message data register- sumsi_message_data the value in the message data register contains the data used during an msi write transaction. the gd31244 controller interrupts may be represented by four, two or a single message. interrupt handler software will need to read the gd31244 controller interrupt status registers to determine the cause of the interrupt when more than one source is represented by less than four messages. during an msi write data phase, the value in the message data register will be driven on to ad[15:0] while ad[31:16] will be driven to zero. c/be[3:0]# are asserted during the data phase of the memory write transaction. table 93. su msi message data register - sumsi_message_data bit default description 15:00 0000h message data - system software specifies a 16-bit value to be transferred during the data phase of an msi write transaction. pci attributes 15 12 8 4 0 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration offset fch - fdh
166 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.3 su pci ide mode command block registers this section defines the command block registers when in pci ide mode. 5.10.3.1 su ide data port register - suidr the su ide data port register is a 16-bit read/write register and is used to transfer data during programmed i/o (pio) mode reads/writes. on the gd31244 controller, the data port register may also be read or written as a 32-bit data port. the gd31244 controller internally breaks the 32-bit transaction into two back-to-back 16-bit transactions. it is recommended that the data port register is always accessed in either 16-bit or 32-bit quantity for a given pio sequence. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. . table 94. su ide data port register - suidr bit default description 15:00 0000h data port - this register is used to transfer data during pio reads and writes. this register shall be accessed only when the drq bit in the status register, su ide status register - suisr , is set. pci attributes 15 12 8 4 0 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset =00h
developer?s manual april 2004 167 intel ? 31244 pci-x to serial ata controller programming interface 5.10.3.2 su ide error register - suier the su ide error register is an 8-bit read-only register. when the su ide error register is written to, instead the su ide features register is written. the su ide error register contains error status for the current command. the content of this register shall be valid when the err bit is set in the su ide status register - suisr . the su ide error register is command dependent and the bits are defined in the at attachment with packet interface-6 (ata/atapi-6) specification . table 95. su ide error register - suier bit default description 07:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a diagnostic code. th e diagnostic code is device dependent. at attachment with packet interface-6 (ata/atapi-6) specification . the bits in this register are command dependent. the bits are only valid when the err bit (bit 0) in the su ide status register - suisr is set. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset = 01h
168 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.3.3 su ide features register - suifr the su ide features register is a write-only register. when this address is read, instead the su ide error register is read. the content of the su ide features register is a command parameter. the content of this register must be loaded before the su ide command register is written. the content of the su ide features register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 96. su ide features register - suifr bit default description 07:00 00h features - this register is command dependent. for example, it may be a parameter as an extension to the su ide command register. in the at attachment with packet interface-6 (ata/atapi-6) specification , this register acts as a 2-byte fifo in order to implement a 16-bit feature register. pci attributes 74 0 wo wo wo wo wo wo wo wo attribute legend: rv = reserved pr = preserved rs = read/set wo = write only rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset = 01h
developer?s manual april 2004 169 intel ? 31244 pci-x to serial ata controller programming interface 5.10.3.4 su ide sector count register - suiscr the su ide sector count register is a read/write register. the content of the su ide sector count register is a command parameter. the content of this register must be loaded before the su ide command register is written. the content of the su ide sector count register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 97. su ide sector count register - suiscr bit default description 07:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a diagnostic code. th e diagnostic code is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . sector count -  this 8-bit field indicates the number of sectors to transfer for a given command. in the at attachment with packet interface-6 (ata/atapi-6) specification , this register acts as a 2-byte fifo in order to implement a 16-bit sector number. pci attributes 74 0 rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset = 02h
170 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.3.5 su ide sector number register - suisnr the su ide sector number register is a read/write register. the content of the su ide sector number register is a command parameter. the content of this register must be loaded before the su ide command register is written. the content of this register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 98. su ide sector number register - suisnr bit default description 07:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a diagnostic code. th e diagnostic code is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . sector number - this field is dependent on the device access methods. there are three method:  chs mode: this field indicates the sector number.  28-bit lba mode: this field is used for bit positions lba[7:0] of the 28-bit addressing lba[27:0].  48-bit lba mode: this field is used for bit positions lba[7:0] and lba[31:24] of the 48-bit addressing lba[47:0]. this register acts as a 2-byte fifo. the higher byte is written first followed by the lower byte. pci attributes 74 0 rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset = 03h
developer?s manual april 2004 171 intel ? 31244 pci-x to serial ata controller programming interface 5.10.3.6 su ide cylinder low register - suiclr the su ide cylinder low register is a read/write register. the content of the su ide cylinder low register is a command parameter. the content of this register must be loaded before the su ide command register is written. the content of the su ide cylinder low register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 99. su ide cylinder low register - suiclr bit default description 07:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a diagnostic code. th e diagnostic code is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . cylinder low - this field is dependent on the device access methods. there are three methods:  chs mode: in chs mode, this field indicates the lower 8 bits of the 16-bit cylinder number identifier.  28-bit lba mode: this field is used for bit positions lba[15:8] of the 28-bit addressing lba[27:0].  48-bit lba mode: this field is used for bit positions lba[15:8] and lba[39:32] of the 48-bit addressing lba[47:0]. this register acts as a 2-byte fifo. the higher byte is written first followed by the lower byte. pci attributes 74 0 rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset = 04h
172 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.3.7 su ide cylinder high register - suichr the su ide cylinder high register is a read/write register. the content of the su ide cylinder high register is a command parameter. the content of this register must be loaded before the su ide command register is written. the content of the su ide cylinder high register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 100. su ide cylinder high register - suichr bit default description 07:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a diagnostic code. th e diagnostic code is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . cylinder high - this field is dependent on the device access methods. there are three methods:  chs mode: in chs mode, this field indicates the higher 8 bits of the 16-bit cylinder number identifier.  28-bit lba mode: this field is used for bit positions lba[23:16] of the 28-bit addressing lba[27:0].  48-bit lba mode: this field is used for bit positions lba[23:16] and lba[47:40] of the 48-bit addressing lba[47:0]. this register acts as a 2-byte fifo. the higher byte is written first followed by the lower byte. pci attributes 74 0 rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset = 05h
developer?s manual april 2004 173 intel ? 31244 pci-x to serial ata controller programming interface 5.10.3.8 su ide device/head register - suidr this su ide device/head register is a read/write register. the content of the su ide device/head register is a command parameter. the content of this register must be loaded before the su ide command register is written. the content of the su ide device/head register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 101. su ide device/head register - suidhr bit default description 07 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a diagnostic code. th e diagnostic code is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . reserved 06 logical addressing mode - this bit indicates the addressing mode: 0 = chs (cylinder/head/sector) mode 1 = lba (logical block addressing) mode 05 reserved 04 device select (dev bit) - this bit is used to select one of the two devices: 0 = device 0 1 = device 1 03-00 head - this field is dependent on the device access methods. there are three methods:  chs mode: in chs mode, this field indicates the head number.  28-bit lba mode: this field is used for bit positions lba[27:24] of the 28-bit addressing lba[27:0].  48-bit lba mode: this field is reserved. pci attributes 7 4 rv rw rv rw rw rw rw rw 0 attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset = 06h
174 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.3.9 su ide status register - suisr the su pci dpa status register is an 8-bit read-only register. when the su ide status register is written, the su ide command register is written instead. this register provides the status of the device and the interface. reading this register implicitly clears any pending interrupt. instead, the alternate status register may be used to read the status of a device without causing any pending interrupt to get cleared. some of the bits in this register are command-dependent and are described in the at attachment with packet interface-6 (ata/atapi-6) specification . information in this register is updated by the device sending a device-to-host register fis or pio setup fis. table 102. su ide status register - suisr bit default description 07 device dependent ? bsy - when this bit is set the interface/device is busy. for example, the device may be working a previous command. this bit is set immediately after the command register is written and a host-to-device register fis is sent to the device, indicating that the interface is busy. the device is then responsible to clear this bit by sending a pio setup fis or device-to-host register fis. 06 device ready (drdy bit) - this bit when set indicates that the device is ready. 05 this bit is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . 04 this bit is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . 03 data request (drq bit) - this bit is set when the device is ready to transfer data. 02 this bit is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . 01 this bit is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . 00 device error (err bit) - this bit when set indicates that an error occurred. the su ide error register - suier provides further error information. ? after power-on, a value of 7fh is returned in this register when read before a device is detected on the serial link. this is c onsistent with the ata standard, indicating that a device is not connected to the cable. after the device is detected and a communication link is esta blished between the host and the device, a value of 80h will be read. bit 7 (bsy bit) set indicates that the device has been detected, but is busy executing its initialization and diagnostics. after the device is done with its initialization and diagnostics sequence, it will send a devic e-to-host register fis with bit 7 (bsy bit) cleared. pci attributes 74 0 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset = 07h
developer?s manual april 2004 175 intel ? 31244 pci-x to serial ata controller programming interface 5.10.3.10 su ide command register - suicr the su ide command register is a write-only register. when the su ide command register is read, instead the su ide status register will be read. a command is initiated by writing this register. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . table 103. su ide command register - suicr bit default description 07:00 00h command - this register is used to initiate a command. this register must be written last. for example, it must be written after the other command block registers are written. because the rest of the registers are parameters for the command. pci attributes 74 0 wo wo wo wo wo wo wo wo attribute legend: rv = reserved pr = preserved rs = read/set wo = write only rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar0/bar2 offset = 07h
176 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.4 su pci ide mode control block registers this section defines the device control and alternate status registers. 5.10.4.1 su ide device control register - suidcr the su ide device control register is a write-only register. when the su ide device control register is read, instead the su ide alternate status register is read. the su ide device control register is used to initiate a software reset to the device. it is also used to enable/disable interrupt. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 104. su ide device control register - suidcr bit default description 07 0 2 high order byte (hob bit) - when operating in 48-bit lba addressing mode, the sector count, cylinder low, and cylinder high registers act a 2-byte deep fifos. for example, each of these registers are 16-bit registers with access to only one byte at a time. the hob bit provides a mechanism for software to be able to read either byte. setting this bit to one allows reading the upper byte, while setting the hob bit to zero allows reading the lower byte 06 0 2 reserved. 05 0 2 reserved. 04 0 2 reserved. 03 0 2 reserved. 02 0 2 srst - this bit is used by the processor to do a software reset. 01 0 2 nien - interrupt enable, this bit when cleared enables the assertion of interrupt signal to the processor. when set, interrupt to the processor is masked. 00 0 2 reserved. this bit shall always be cleared. pci attributes 74 0 wo rv rv rv rv wo wo rv attribute legend: rv = reserved pr = preserved rs = read/set wo = write only rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar1/bar3 offset = 02h
developer?s manual april 2004 177 intel ? 31244 pci-x to serial ata controller programming interface 5.10.4.2 su ide alternate status register - suiasr the su ide alternate status register is an 8-bit read-only register. when the su ide alternate status register is written to, instead the su ide device control register is written. this register contains the same information as the su ide status register, table 102, ?su ide status register - suisr? on page 174 . the difference is that when this register is read, any pending interrupt is not cleared. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 105. su ide alternate status register - suiasr bit default description 07:00 refer to section 102, ?su ide status register - suisr? on page 174 . alternate status register - this register contains the same information as in the su ide status register. the difference is that when this register is read, any pending interrupts are not cleared. refer to section 102, ?su ide status register - suisr? on page 174 . pci attributes 7 40 ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar1/bar3 offset = 02h
178 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.5 su pci ide mode dma registers this section defines the dma registers. 5.10.5.1 su ide channel 0 dma command register - suicdcr0 the su ide channel 0 dma command register enables/disables the dma engine (bus master capability) and also provides direction control for dma transfers. . table 106. su ide channel 0 dma command register - suicdcr0 bit default description 15:10 00h reserved 09 0 2 first party dma direction: 0 = from device to host 1 = from host to device 08 0 2 first party dma active: 0 = not active 1 = active 07:04 0h reserved 03 0 2 dma read/write control: 0 = reads memory to write fifo. fifo data is written to sata device. 1 = writes memory with fifo data. fifo contains data read from sata device. this bit must not be changed when the dma is active. while synchronous dma transfer is in progress, this bit will be read only. the bit will return to read/write once the synchronous dma transfer has been completed or halted. 02:01 00 2 reserved. 00 0 2 start/stop dma transfer: 1 = start; 0 = stop. when this bit is set to 1, the dma operation starts. the controller transfers data between the device and memory only while this bit is set. operation may be stopped by writing a 0 to this bit. this results in all state information being lost (i.e., operation cannot be stop and then resumed). when this bit is set to 0 while bus master operation is still active (i.e., bit 0 = 1 in the dma status register) and data transfer has not yet finished (i.e., bit 2 = 0 in the dma status register), the dma command is aborted and data transferred from the drive may be discarded by the sata port rather than being written to memory. this bit is intended to be set to 0 after the data transfer is completed, as indicated by either bit 0 or bit 2 set in the dma status register. pci attributes 15 12 8 4 0 rv rv rv rv rv rv ro ro rv rv rv rv rw rv rv rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar4 offset = 00hpci ide mode bar4 offset = 00h
developer?s manual april 2004 179 intel ? 31244 pci-x to serial ata controller programming interface 5.10.5.2 su ide channel 0 dma status register - suicdsr0 the su ide channel 0 dma status register provides status of the dma engine. . table 107. su ide channel 0 dma status register - suicdsr0 bit default description 07 0 2 this bit is hardwired to 0. simplex only. 06 1 2 drive 1 dma capable: 1 = drive 1 is capable of dma transfers. this bit is a software controlled status bit that indicates dma device capability and does not affect hardware operation. 05 1 2 drive 0 dma capable: 1 = drive 0 is capable of dma transfers. this bit is a software controlled status bit that indicates dma device capability and does not affect hardware operation. 04:03 00 2 reserved. 02 0 2 interrupt status: this bit, when set to a 1, indicates that a device has asserted its interrupt line. when this is set to 1, all read data from the device has been transferred to memory and all write data has been transferred to the device. software sets this bit to a 0 by writing a 1 to it. 01 0 2 dma error: this bit is set to 1 under the following conditions while transferring data on the pci bus.  detected a master abort on the pci bus  detected a target abort on the pci bus  detected a parity error on the pci bus software sets this bit to 0 by writing a 1 to it. 00 0 2 dma active: the gd31244 sets this bit to 1 when bit 0 in the su ide channel 0 dma command register is set to 1. refer to table 106, ?su ide channel 0 dma command register - suicdcr0? on page 178 . the gd31244 sets this bit to 0 when the last transfer is performed (where eot for that descriptor is set). the gd31244 also sets this bit to 0 when bit 0 of the su ide channel 0 dma command register is set to 0. when this bit is read as a 0, all data transferred from the drive during the previous bus master command is visible in memory, unless the dma command was aborted. pci attributes 74 0 ro rw rw rv rv rc rc ro 3 attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar4 offset = 02h
180 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.5.3 su ide channel 0 dma descriptor table pointer register - suicddtpr0 this su ide channel 0 dma descriptor table pointer register contains the lower 32-bit pci address. in pci ide mode, the su ide channel 0 dma descriptor table pointer register points to system memory. table 108. su ide channel 0 dma descriptor table pointer register - suicddtpr0 bit default description 31:02 0000 0000h pci address - is lower pci address. this register contains the base address of the descriptor table. the descriptor table must be dword aligned and must not cross a 64 kbyte boundary. 01:00 00 2 reserved. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar4 offset = 04h
developer?s manual april 2004 181 intel ? 31244 pci-x to serial ata controller programming interface 5.10.5.4 su ide channel 1 dma command register - suicdcr1 the su ide channel 1 dma command register enables/disables the dma engine (bus master capability) and also provides direction control for dma transfers. . table 109. su ide channel 1 dma command register - suicdcr1 bit default description 15:10 00h reserved 09 0 2 first party dma direction: 0 = from device to host 1 = from host to device 08 0 2 first party dma active: 0 = not active 1 = active 07:04 0h reserved 03 0 2 dma read/write control: 0 = reads 1 = writes this bit must not be changed when the dma is active. while synchronous dma transfer is in progress, this bit will be read only. the bit will return to read/write once the synchronous dma transfer has been completed or halted. 02:01 00 2 reserved. 00 0 2 start/stop dma transfer: 0 = stop 1 = start when this bit is set to 1, the dma operation starts. the controller transfers data between the device and memory only while this bit is set. operation may be stopped by writing a 0 to this bit. this results in all state information being lost (i.e., operation cannot be stop and then resumed). when this bit is set to 0 while bus master operation is still active (i.e., bit 0 = 1 in the dma status register) and data transfer has not yet finished (i.e., bit 2 = 0 in the dma status register), the dma command is aborted and data transferred from the drive may be discarded by the sata port rather than being written to memory. this bit is intended to be set to 0 after the data transfer is completed, as indicated by either bit 0 or bit 2 set in the dma status register. pci attributes 15 12 8 4 0 rv rv rv rv rv rv ro ro rv rv rv rv rw rv rv rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar4 offset = 08h
182 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.5.5 su ide channel 1 dma status register - suicdsr1 the su ide channel 1 dma status register provides status of the dma engine. . table 110. su ide channel 1 dma status register - suicdsr1 bit default description 07 0 2 this bit is hardwired to 0. simplex only. 06 1 2 drive 1 dma capable: 1 = drive 1 is capable of dma transfers. this bit is a software controlled status bit that indicates dma device capability and does not affect hardware operation. 05 1 2 drive 0 dma capable: 1 = drive 0 is capable of dma transfers. this bit is a software controlled status bit that indicates dma device capability and does not affect hardware operation. 04:03 00 2 reserved. 02 0 2 interrupt status: this bit, when set to a 1, indicates that a device has asserted its interrupt line. when this bit is set to 1, all read data from the device has been transferred to memory and all write data has been transferred to the device. software sets this bit to a 0 by writing a 1 to it. 01 0 2 dma error: this bit is set to 1 under the following conditions while transferring data on the pci bus.  detected a master abort on the pci bus  detected a target abort on the pci bus  detected a parity error on the pci bus software sets this bit to 0 by writing a 1 to it. 00 0 2 dma active: the gd31244 sets this bit to 1 when bit 0 in the su ide channel 0 dma command register is set to 1. refer to table 109, ?su ide channel 1 dma command register - suicdcr1? on page 181 . the gd31244 sets this bit to 0 when the last transfer is performed (where eot for that descriptor is set). the gd31244 also sets this bit to 0 when bit 0 of the su ide channel 1 dma command register is set to 0. when this bit is read as a 0, all data transferred from the drive during the previous bus master command is visible in memory, unless the dma command was aborted. pci attributes 74 0 3 ro rw rw rv rv rc rc ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar4 offset = 0ah
developer?s manual april 2004 183 intel ? 31244 pci-x to serial ata controller programming interface 5.10.5.6 su ide channel 1 dma descriptor table pointer register - suicddtpr1 this su ide channel 1 dma descriptor table pointer register contains the lower 32-bit pci address. in pci ide mode, the su ide channel 0 dma descriptor table pointer register points to system memory. table 111. su ide channel 1 dma descriptor table pointer register - suicddtpr1 bit default description 31:02 0000 0000h pci address - is lower pci address. this register contains the base address of the descriptor table. the descriptor table must be dword aligned and must not cross a 64 kbyte boundary. 01:00 00 2 reserved. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar4 offset = 0ch
184 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.6 su pci dpa mode registers this section defines the sata unit registers as viewed from the pci bus when in direct port access mode. the registers are memory-mapped into the pci memory space. every pci device/function implements its own separate configuration address space and configuration registers. the pci local bus specification , revision 2.2 requires that configuration space be 256 bytes, and the first 64 bytes must adhere to a predefined header format. refer to section 5.10.1, ?pci ide mode registers? on page 103 for the configuration space, as the configuration registers are the same as in the pci ide mode. there are a few registers that are different that are highlighted in this section. when in the direct port access mode, the serial ata unit registers are mapped into the pci memory space. only one 64-bit base address register is defined to access all four sata port registers. table 112 shows the differences in the configuration space between the two modes. the sata port registers are listed in table 113 . when in direct port access mode, su pci dpa base address register 0 - sudbar0 and su pci dpa upper base address register 0 - supdubar0 , are used to access the sata port registers. table 112. configuration space comparison in pci ide mode in direct port access mode offset su base address register 0 - subar0 su pci dpa base address register 0 - sudbar0 10h su base address register 1 - subar1 su pci dpa upper base address register 0 - supdubar0 14h su base address register 2 - subar2 reserved 18h su base address register 3 - subar3 reserved 1ch su base address register 4 - subar4 reserved 20h su base address register 5 - subar5 reserved 24h
developer?s manual april 2004 185 intel ? 31244 pci-x to serial ata controller programming interface table 113 shows the sata port registers. each sata port consumes 512 bytes of address space. the common port registers consume 512 bytes. all four sata ports and the common port registers occupy 4 kbytes of address space. the sata port registers are defined in section 5.10.8, ?su pci dpa mode common sata port registers? on page 194 through section 5.10.12, ?su pci dpa mode superset registers? on page 220 . table 113. sata port registers mapping in pci dpa mode (sheet 1 of 7) register name offset su pci dpa interrupt pending register - supdipr 000h su pci dpa interrupt mask register - supdimr 004h reserved. 008h - 1ffh su pci dpa data port register - supddr port 0 - 200h port 1 - 400h port 2 - 600h port 3 - 800h su pci dpa error register - supder port 0 - 204h port 1 - 404h port 2 - 604h port 3 - 804h su pci dpa features register - supdfr port 0 - 206h port 1 - 406h port 2 - 606h port 3 - 806h su pci dpa sector count register - supdscr port 0 - 208h port 1 - 408h port 2 - 608h port 3 - 808h su pci dpa sector number register - supdsnr port 0 - 20ch port 1 - 40ch port 2 - 60ch port 3 - 80ch su pci dpa cylinder low register - supdclr port 0 - 210h port 1 - 410h port 2 - 610h port 3 - 810h su pci dpa cylinder high register - supdchr port 0 - 214h port 1 - 414h port 2 - 614h port 3 - 814h su pci dpa device/head register - supddhr port 0 - 218h port 1 - 418h port 2 - 618h port 3 - 818h su pci dpa status register - supdsr port 0 - 21ch port 1 - 41ch port 2 - 61ch port 3 - 81ch
186 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface su pci dpa command register - supdcr port 0 - 21dh port 1 - 41dh port 2 - 61dh port 3 - 81dh reserved. port 0 - 220h - 227h port 1 - 420h - 427h port 2 - 620h - 627h port 3 - 820h - 827h su pci dpa alternate status register - supdasr port 0 - 228h port 1 - 428h port 2 - 628h port 3 - 828h su pci dpa device control register - supddctlr port 0 - 229h port 1 - 429h port 2 - 629h port 3 - 829h reserved. port 0 - 22ch - 25fh port 1 - 42ch - 42fh port 2 - 62ch - 62fh port 3 - 82ch - 82fh reserved. port 0 - 260h port 1 - 460h port 2 - 660h port 3 - 860h su pci dpa upper dma descriptor table pointer register - supduddtpr port 0 - 264h port 1 - 464h port 2 - 664h port 3 - 864h reserved. port 0 - 268h port 1 - 468h port 2 - 668h port 3 - 868h su pci dpa upper dma data buffer pointer register - supduddpr . port 0 - 26ch port 1 - 46ch port 2 - 66ch port 3 - 86ch su pci dpa dma command register - supddcmdr port 0 - 270h port 1 - 470h port 2 - 670h port 3 - 870h su pci dpa dma status register - supddsr port 0 - 272h port 1 - 472h port 2 - 672h port 3 - 872h table 113. sata port registers mapping in pci dpa mode (sheet 2 of 7) register name offset
developer?s manual april 2004 187 intel ? 31244 pci-x to serial ata controller programming interface su pci dpa dma descriptor table pointer register - supdddtpr port 0 - 274h port 1 - 474h port 2 - 674h port 3 - 874h reserved. port 0 - 278h - 2ffh port 1 - 478h - 4ffh port 2 - 678h - 6ffh port 3 - 878h - 8ffh su pci dpa sata sstatus register - supdsssr port 0 - 300h port 1 - 500h port 2 - 700h port 3 - 900h su pci dpa sata serror register - supdsser port 0 - 304h port 1 - 504h port 2 - 704h port 3 - 904h su pci dpa sata scontrol register - supdsscr port 0 - 308h port 1 - 508h port 2 - 708h port 3 - 908h su pci dpa set device bits register - supdsdbr port 0 - 30ch port 1 - 50ch port 2 - 70ch port 3 - 90ch reserved. port 0 - 310h - 33fh port 1 - 510h - 53fh port 2 - 710h - 73fh port 3 - 910h - 93fh su pci dpa phy feature register - supdpfr port 0 - 340h port 1 - 540h port 2 - 740h port 3 - 940h su pci dpa bist fis control and status register - supdbfcsr port 0 - 344h port 1 - 544h port 2 - 744h port 3 - 944h su pci dpa bist errors register - supdber port 0 - 348h port 1 - 548h port 2 - 748h port 3 - 948h su pci dpa bist frames register - supdbfr port 0 - 34ch port 1 - 54ch port 2 - 74ch port 3 - 94ch table 113. sata port registers mapping in pci dpa mode (sheet 3 of 7) register name offset
188 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface su pci dpa host bist data low register - supdhbdlr port 0 - 350h port 1 - 550h port 2 - 750h port 3 - 950h su pci dpa host bist data high register - supdhbdhr port 0 - 354h port 1 - 554h port 2 - 754h port 3 - 954h su pci dpa device bist data low register - supddbdlr port 0 - 358h port 1 - 558h port 2 - 758h port 3 - 958h su pci dpa device bist data high register - supddbdhr port 0 - 35ch port 1 - 55ch port 2 - 75ch port 3 - 95ch su pci dpa queuing table base address register low - supdqtbarl port 0 - 360h port 1 - 560h port 2 - 760h port 3 - 960h su pci dpa queuing table base address register high - supdqtbarh port 0 - 364h port 1 - 564h port 2 - 764h port 3 - 964h su pci dpa dma setup fis control and status register - supddsfcsr port 0 - 368h port 1 - 568h port 2 - 768h port 3 - 968h su pci dpa host dma buffer identifier low register - supdhdbilr port 0 - 36ch port 1 - 56ch port 2 - 76ch port 3 - 96ch su pci dpa host dma buffer identifier high register - supdhdbihr port 0 - 370h port 1 - 570h port 2 - 770h port 3 - 970h su pci dpa host reserved dword register 0 - supdhrdr 0 . port 0 - 374h port 1 - 574h port 2 - 774h port 3 - 974h su pci dpa host dma buffer offset register - supdhdbor port 0 - 378h port 1 - 578h port 2 - 778h port 3 - 978h table 113. sata port registers mapping in pci dpa mode (sheet 4 of 7) register name offset
developer?s manual april 2004 189 intel ? 31244 pci-x to serial ata controller programming interface su pci dpa host dma transfer count register - supdhdtcr port 0 - 37ch port 1 - 57ch port 2 - 77ch port 3 - 87ch su pci dpa host reserved dword register 1- supdhrdr 1 . port 0 - 380h port 1 - 580h port 2 - 780h port 3 - 980h su pci dpa device dma buffer identifier low register - supdddbilr port 0 - 384h port 1 - 584h port 2 - 784h port 3 - 984h su pci dpa device dma buffer identifier high register - supdddbihr port 0 - 388h port 1 - 588h port 2 - 788h port 3 - 988h su pci dpa device reserved dword register 0 - supddrdr0 port 0 - 38ch port 1 - 58ch port 2 - 78ch port 3 - 98ch su pci dpa device dma buffer offset register - supdddbor port 0 - 390h port 1 - 590h port 2 - 790h port 3 - 990h su pci dpa device dma transfer count register - supddtcr port 0 - 394h port 1 - 594h port 2 - 794h port 3 - 994h reserved word port 0 - 398h port 1 - 598h port 2 - 798h port 3 - 998h reserved word port 0 - 39ch port 1 - 59ch port 2 - 79ch port 3 - 99ch reserved word port 0 - 3a0h port 1 - 5a0h port 2 - 7a0h port 3 - 9a0h reserved word port 0 - 3a4h port 1 - 5a4h port 2 - 7a4h port 3 - 9a4h table 113. sata port registers mapping in pci dpa mode (sheet 5 of 7) register name offset
190 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface reserved word port 0 - 3a8h port 1 - 5a8h port 2 - 7a8h port 3 - 9a8h reserved word port 0 - 3ach port 1 - 5ach port 2 - 7ach port 3 - 9ach reserved word port 0 - 3b0h port 1 - 5b0h port 2 - 7b0h port 3 - 9b0h reserved word port 0 - 3b4h port 1 - 5b4h port 2 - 7b4h port 3 - 9b4h reserved word port 0 - 3b8h port 1 - 5b8h port 2 - 7b8h port 3 - 9b8h reserved word port 0 - 3bch port 1 - 5bch port 2 - 7bch port 3 - 9bch reserved word port 0 - 3c0h port 1 - 5c0h port 2 - 7c0h port 3 - 9c0h reserved word port 0 - 3c4h port 1 - 5c4h port 2 - 7c4h port 3 - 9c4h reserved word port 0 - 3c8h port 1 - 5c8h port 2 - 7c8h port 3 - 9c8h test register 0 port 0 - 3cch port 1 - 5cch port 2 - 7cch port 3 - 9cch table 113. sata port registers mapping in pci dpa mode (sheet 6 of 7) register name offset
developer?s manual april 2004 191 intel ? 31244 pci-x to serial ata controller programming interface s test register 1 port 0 - 3d0h port 1 - 5d0h port 2 - 7d0h port 3 - 9d0h reserved. port 0 - 3d4h - 3fc port 1 - 5d4h-5fc port 2 - 7d4h - 7fc port 3 - 9d4h -9fc note: each sata port occupy 512 bytes of address space. port 0, 1, 2, 3 are offset with respect to the base address register 0 at 000h, 200h, 400h, and 600h respectively. table 113. sata port registers mapping in pci dpa mode (sheet 7 of 7) register name offset
192 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.7 su pci dpa mode base address registers this section defines the configuration registers that are different in pci direct port access mode. 5.10.7.1 su pci dpa base address register 0 - supdbar0 the su pci dpa base address register 0 (sudbar0) together with the su pci dpa upper base address register 0 (sudubar0) defines the block of memory addresses in which the sata ports registers are mapped. table 114. su pci dpa base address register 0 - sudbar0 bit default description 31:12 00000h base address 0 - these bits define the actual location the sata unit is to respond to when addressed from the pci bus. 11:04 00h reserved. 03 0 2 prefetchable indicator - when cleared, defines the memory space as non-prefetchable. 02:01 10 2 type indicator - defines the width of the addressability for this memory window: 00 - memory window is locatable anywhere in 32 bit address space. 10 - memory window is locatable anywhere in 64 bit address space. 00 0 2 memory space indicator - this bit field describes memory or i/o space base address. the sata unit in direct port access mode is mapped in memory space, thus this bit must be zero. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv rv rv rv rv rv rv ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 10h -13h
developer?s manual april 2004 193 intel ? 31244 pci-x to serial ata controller programming interface 5.10.7.2 su pci dpa upper base address register 0 - supdubar0 this su pci dpa upper base address register (supdubar0) contains the upper base address when decoding pci addresses beyond 4 gbytes. together with the su pci dpa base address register 0 (supdbar0), this register defines the actual location the sata unit responds to when addressed from the pci bus for addresses > 4 gbytes (for dacs). the programmed value within the base address register must comply with the pci programming requirements for address alignment. refer to the pci local bus specification , revision 2.2 for additional information on programming base address registers. table 115. su pci dpa upper base address register 0 - supdubar0 bit default description 31:00 0000_0000h upper base address 0 - together with base address 0 these bits define the actual location the sata unit is to respond to when addressed from the pci bus for addresses > 4 gbytes. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci configuration address offset 14h - 17h
194 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.8 su pci dpa mode common sata port registers this section defines registers that are common to all the four sata ports. 5.10.8.1 su pci dpa interrupt pending register - supdipr the su pci dpa interrupt pending register is a 32-bit read-only register. this register is used to report interrupts generated by the sata ports. software must clear any pending interrupt at the appropriate sources. the ide interrupts (bits 31, 23, 15, 7) are cleared by reading the sata port command block status register. other pending interrupts in this register are generated by the serror registers, and must be cleared by writing 1s to the serror registers. table 116. su pci dpa interrupt pending register - supdipr (sheet 1 of 5) bit default description 31 0 2 sata port 3 ide interrupt - when set, this bit indicates that the sata device generated an interrupt. this is the same as pci ide compatible interrupt. the source of this interrupt is based on the setting of the ?i? bit in the device-to-host register fis. this interrupt is cleared by reading the taskfile status register. 30 0 2 sata port 3 crc error detect interrupt - when set, this bit indicates that a crc error was detected on a previous data transfer. the source of this interrupt is from bit 21 (diag_c) of the serror register. this interrupt is cleared by writing a 1 to bit 21 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 29 0 2 sata port 3 data integrity interrupt - when set, this bit indicates that a crc, disparity error was detected by the host, or an r_err primitive was returned by the device in response to a data fis transfer. the source of this interrupt is from bit 8 (err_t) of the serror register. this interrupt is cleared by writing a 1 to bit 8 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 28 0 2 sata port 3 unrecognized fis reception interrupt - when set, this bit indicates that an unsupported fis was detected. the source of this interrupt is from bit 10 (err_p) of the serror register. this interrupt is cleared by writing a 1 to bit 10 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 27 0 2 sata port 3 r_err primitive received interrupt - when set, this bit indicates that an r_err primitive was received during a data fis transfer. the source of this interrupt is from bit 22 (diag_h) of the serror register. this interrupt is cleared by writing a 1 to bit 22 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 26 0 2 sata port 3 fifo error interrupt - when set, a fifo error occurred during a data fis transfer. the source of this interrupt is from bit 11 (err_e) of the serror register. this interrupt is cleared by writing a 1 to bit 11 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . pci attributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset 000h
developer?s manual april 2004 195 intel ? 31244 pci-x to serial ata controller programming interface 25 0 2 sata port 3 phy ready interrupt - when set, a sata port 0 phy became ready from not ready. oob is done. the source of this interrupt is from bit 1 (err_m) of the serror register. this interrupt is cleared by writing a 1 to bit 1 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready as part of the initialization sequence, the value will change to 1 2 . 24 0 2 sata port 3 phy change state interrupt - when set, the phy either went from ready to not-ready, or from not-ready to ready. the source of this interrupt is from bit 16 (diag_n) of the serror register. this interrupt is cleared by writing a 1 to bit 16 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready (state change from not-ready to ready) as part of the initialization sequence, the value will change to 1 2 . 23 0 2 sata port 2 ide interrupt - when set, this bit indicates that the sata device generated an interrupt. this is the same as pci ide compatible interrupt. the source of this interrupt is based on the setting of the ?i? bit in the device-to-host register fis. this interrupt is cleared by reading the taskfile status register. 22 0 2 sata port 2 crc error detect interrupt - when set, this bit indicates that a crc error was detected on a previous data transfer. the source of this interrupt is from bit 21 (diag_c) of the serror register. this interrupt is cleared by writing a 1 to bit 21 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 21 0 2 sata port 2 data integrity interrupt - when set, this bit indicates that a crc, disparity error was detected by the host, or an r_err was returned by the device in response to a data fis transfer. the source of this interrupt is from bit 8 (err_t) of the serror register. this interrupt is cleared by writing a 1 to bit 8 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 20 0 2 sata port 2 unrecognized fis reception interrupt - when set, this bit indicates that an unsupported fis was detected. the source of this interrupt is from bit 10 (err_p) of the serror register. this interrupt is cleared by writing a 1 to bit 10 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 19 0 2 sata port 2 r_err primitive received interrupt - when set, this bit indicates that an r_err primitive was received during a data fis transfer. the source of this interrupt is from bit 22 (diag_h) of the serror register. this interrupt is cleared by writing a 1 to bit 22 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 18 0 2 sata port 2 fifo error interrupt - when set, a fifo error occurred during a data fis transfer. the source of this interrupt is from bit 11 (err_e) of the serror register. this interrupt is cleared by writing a 1 to bit 11 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 17 0 2 sata port 2 phy ready interrupt - when set, a sata port 0 phy became ready from not ready. oob is done. the source of this interrupt is from bit 1 (err_m) of the serror register. this interrupt is cleared by writing a 1 to bit 1 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready as part of the initialization sequence, the value will change to 1 2 . table 116. su pci dpa interrupt pending register - supdipr (sheet 2 of 5) bit default description pci attributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset 000h
196 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 25 0 2 sata port 3 phy ready interrupt - when set, a sata port 0 phy became ready from not ready. oob is done. the source of this interrupt is from bit 1 (err_m) of the serror register. this interrupt is cleared by writing a 1 to bit 1 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready as part of the initialization sequence, the value will change to 1 2 . 24 0 2 sata port 3 phy change state interrupt - when set, the phy either went from ready to not-ready, or from not-ready to ready. the source of this interrupt is from bit 16 (diag_n) of the serror register. this interrupt is cleared by writing a 1 to bit 16 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready (state change from not-ready to ready) as part of the initialization sequence, the value will change to 1 2 . 23 0 2 sata port 2 ide interrupt - when set, this bit indicates that the sata device generated an interrupt. this is the same as pci ide compatible interrupt. the source of this interrupt is based on the setting of the ?i? bit in the device-to-host register fis. this interrupt is cleared by reading the taskfile status register. 22 0 2 sata port 2 crc error detect interrupt - when set, this bit indicates that a crc error was detected on a previous data transfer. the source of this interrupt is from bit 21 (diag_c) of the serror register. this interrupt is cleared by writing a 1 to bit 21 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 21 0 2 sata port 2 data integrity interrupt - when set, this bit indicates that a crc, disparity error was detected by the host, or an r_err was returned by the device in response to a data fis transfer. the source of this interrupt is from bit 8 (err_t) of the serror register. this interrupt is cleared by writing a 1 to bit 8 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 20 0 2 sata port 2 unrecognized fis reception interrupt - when set, this bit indicates that an unsupported fis was detected. the source of this interrupt is from bit 10 (err_p) of the serror register. this interrupt is cleared by writing a 1 to bit 10 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 19 0 2 sata port 2 r_err primitive received interrupt - when set, this bit indicates that an r_err primitive was received during a data fis transfer. the source of this interrupt is from bit 22 (diag_h) of the serror register. this interrupt is cleared by writing a 1 to bit 22 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 18 0 2 sata port 2 fifo error interrupt - when set, a fifo error occurred during a data fis transfer. the source of this interrupt is from bit 11 (err_e) of the serror register. this interrupt is cleared by writing a 1 to bit 11 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 17 0 2 sata port 2 phy ready interrupt - when set, a sata port 0 phy became ready from not ready. oob is done. the source of this interrupt is from bit 1 (err_m) of the serror register. this interrupt is cleared by writing a 1 to bit 1 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready as part of the initialization sequence, the value will change to 1 2 . table 116. su pci dpa interrupt pending register - supdipr (sheet 2 of 5) bit default description pci attributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset 000h
developer?s manual april 2004 197 intel ? 31244 pci-x to serial ata controller programming interface 16 0 2 sata port 2 phy change state interrupt - when set, the phy either went from ready to not-ready, or from not-ready to ready. the source of this interrupt is from bit 16 (diag_n) of the serror register. this interrupt is cleared by writing a 1 to bit 16 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready (state change from not-ready to ready) as part of the initialization sequence, the value will change to 1 2 . 15 0 2 sata port 1 ide interrupt - when set, this bit indicates that the sata device generated an interrupt. this is the same as pci ide compatible interrupt. the source of this interrupt is based on the setting of the ?i? bit in the device-to-host register fis. this interrupt is cleared by reading the taskfile status register. 14 0 2 sata port 1 crc error detect interrupt - when set, this bit indicates that a crc error was detected on a previous data transfer. the source of this interrupt is from bit 21 (diag_c) of the serror register. this interrupt is cleared by writing a 1 to bit 21 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 13 0 2 sata port 1 data integrity interrupt - when set, this bit indicates that a crc, disparity error was detected by the host, or an r_err primitive was returned by the device in response to a data fis transfer. the source of this interrupt is from bit 8 (err_t) of the serror register. this interrupt is cleared by writing a 1 to bit 8 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 12 0 2 sata port 1 unrecognized fis reception interrupt - when set, this bit indicates that an unsupported fis was detected. the source of this interrupt is from bit 10 (err_p) of the serror register. this interrupt is cleared by writing a 1 to bit 10 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 11 0 2 sata port 1 r_err primitive received interrupt - when set, this bit indicates that an r_err primitive was received during a data fis transfer. the source of this interrupt is from bit 22 (diag_h) of the serror register. this interrupt is cleared by writing a 1 to bit 22 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 10 0 2 sata port 1 fifo error interrupt - when set, a fifo error occurred during a data fis transfer. the source of this interrupt is from bit 11 (err_e) of the serror register. this interrupt is cleared by writing a 1 to bit 11 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 09 0 2 sata port 1 phy ready interrupt - when set, a sata port 0 phy became ready from not ready. oob is done. the source of this interrupt is from bit 1 (err_m) of the serror register. this interrupt is cleared by writing a 1 to bit 1 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready as part of the initialization sequence, the value will change to 1 2 . table 116. su pci dpa interrupt pending register - supdipr (sheet 3 of 5) bit default description pci attributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset 000h
198 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 08 0 2 sata port 1 phy change state interrupt - when set, the phy either went from ready to not-ready, or from not-ready to ready. the source of this interrupt is from bit 16 (diag_n) of the serror register. this interrupt is cleared by writing a 1 to bit 16 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready (state change from not-ready to ready) as part of the initialization sequence, the value will change to 1 2 . 07 0 2 sata port 0 ide interrupt - when set, this bit indicates that the sata device generated an interrupt. this is the same as pci ide compatible interrupt. the source of this interrupt is based on the setting of the ?i? bit in the device-to-host register fis. this interrupt is cleared by reading the taskfile status register. 06 0 2 sata port 0 crc error detect interrupt - when set, this bit indicates that a crc error was detected on a previous data transfer. the source of this interrupt is from bit 21 (diag_c) of the serror register. this interrupt is cleared by writing a 1 to bit 21 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 05 0 2 sata port 0 data integrity interrupt - when set, this bit indicates that a crc, disparity error was detected by the host, or an r_err primitive was returned by the device in response to a data fis transfer. the source of this interrupt is from bit 8 (err_t) of the serror register. this interrupt is cleared by writing a 1 to bit 8 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 04 0 2 sata port 0 unrecognized fis reception interrupt - when set, this bit indicates that an unsupported fis was detected. the source of this interrupt is from bit 10 (err_p) of the serror register. this interrupt is cleared by writing a 1 to bit 10 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 03 0 2 sata port 0 r_err received interrupt - when set, this bit indicates that an r_err primitive was received during a data fis transfer. the source of this interrupt is from bit 22 (diag_h) of the serror register. this interrupt is cleared by writing a 1 to bit 22 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 02 0 2 sata port 0 fifo error interrupt - when set, a fifo error occurred during a data fis transfer. the source of this interrupt is from bit 11 (err_e) of the serror register. this interrupt is cleared by writing a 1 to bit 11 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . 01 0 2 sata port 0 phy ready interrupt - when set, a sata port 0 phy became ready from not ready. oob is done. the source of this interrupt is from bit 1 (err_m) of the serror register. this interrupt is cleared by writing a 1 to bit 1 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready as part of the initialization sequence, the value will change to 1 2 . table 116. su pci dpa interrupt pending register - supdipr (sheet 4 of 5) bit default description pci attributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset 000h
developer?s manual april 2004 199 intel ? 31244 pci-x to serial ata controller programming interface 00 0 2 sata port 0 phy change state interrupt - when set, the phy either went from ready to not-ready, or from not-ready to ready. the source of this interrupt is from bit 16 (diag_n) of the serror register. this interrupt is cleared by writing a 1 to bit 16 of the serror register. refer to section 5.10.12.2, ?su pci dpa sata serror register - supdsser? on page 222 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready (state change from not-ready to ready) as part of the initialization sequence, the value will change to 1 2 . table 116. su pci dpa interrupt pending register - supdipr (sheet 5 of 5) bit default description pci attributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset 000h
200 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.8.2 su pci dpa interrupt mask register - supdimr the su pci dpa interrupt mask register is a 32-bit register. this register is used to mask interrupts pending in the su pci dpa interrupt pending register. each bit in the su pci dpa interrupt mask register corresponds to a bit in the su pci dpa interrupt pending register. refer to section 5.10.8.1, ?su pci dpa interrupt pending register - supdipr? on page 194 . table 117. su pci dpa interrupt mask register - supdimr (sheet 1 of 3) bit default description 31 1 2 sata port 3 ide interrupt mask bit. 0 = masked 1 = not masked 30 0 2 sata port 3 signal detect interrupt mask bit. 0 = masked 1 = not masked 29 0 2 sata port 3 data integrity interrupt mask bit. 0 = masked 1 = not masked 28 0 2 sata port 3 unrecognized fis reception interrupt mask bit. 0 = masked 1 = not masked 27 0 2 sata port 3 r_err primitive received interrupt mask bit. 0 = masked 1 = not masked 26 0 2 sata port 3 fifo error interrupt mask bit. 0 = masked 1 = not masked 25 0 2 sata port 3 phy ready interrupt mask bit. 0 = masked 1 = not masked 24 0 2 sata port 3 phy change state interrupt mask bit. 0 = masked 1 = not masked 23 1 2 sata port 2 ide interrupt mask bit. 0 = masked 1 = not masked 22 0 2 sata port 2 signal detect interrupt mask bit. 0 = masked 1 = not masked pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset 004h
developer?s manual april 2004 201 intel ? 31244 pci-x to serial ata controller programming interface 21 0 2 sata port 2 data integrity interrupt mask bit. 0 = masked 1 = not masked 20 0 2 sata port 2 unrecognized fis reception interrupt mask bit. 0 = masked 1 = not masked 19 0 2 sata port 2 r_err primitive received interrupt mask bit. 0 = masked 1 = not masked 18 0 2 sata port 2 fifo error interrupt mask bit. 0 = masked 1 = not masked 17 0 2 sata port 2 phy ready interrupt mask bit. 0 = masked 1 = not masked 16 0 2 sata port 2 phy change state interrupt mask bit. 0 = masked 1 = not masked 15 1 2 sata port 1 ide interrupt mask bit. 0 = masked 1 = not masked 14 0 2 sata port 1 signal detect interrupt mask bit. 0 = masked 1 = not masked 13 0 2 sata port 1 data integrity interrupt mask bit. 0 = masked 1 = not masked 12 0 2 sata port 1 unrecognized fis reception interrupt mask bit. 0 = masked 1 = not masked 11 0 2 sata port 1 r_err primitive received interrupt mask bit. 0 = masked 1 = not masked 10 0 2 sata port 1 fifo error interrupt mask bit. 0 = masked 1 = not masked table 117. su pci dpa interrupt mask register - supdimr (sheet 2 of 3) bit default description pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset 004h
202 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 09 0 2 sata port 1 phy ready interrupt mask bit. 0 = masked 1 = not masked 08 0 2 sata port 1 phy change state interrupt mask bit. 0 = masked 1 = not masked 07 1 2 sata port 0 ide interrupt mask bit. 0 = masked 1 = not masked 06 0 2 sata port 0 signal detect interrupt mask bit. 0 = masked 1 = not masked 05 0 2 sata port 0 data integrity interrupt mask bit. 0 = masked 1 = not masked 04 0 2 sata port 0 unrecognized fis reception interrupt mask bit. 0 = masked 1 = not masked 03 0 2 sata port 0 r_err primitive received interrupt mask bit. 0 = masked 1 = not masked 02 0 2 sata port 0 fifo error interrupt mask bit. 0 = masked 1 = not masked 01 0 2 sata port 0 phy ready interrupt mask bit. 0 = masked 1 = not masked 00 0 2 sata port 0 phy change state interrupt mask bit. 0 = masked 1 = not masked table 117. su pci dpa interrupt mask register - supdimr (sheet 3 of 3) bit default description pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset 004h
developer?s manual april 2004 203 intel ? 31244 pci-x to serial ata controller programming interface 5.10.9 su pci dpa mode command block registers this section defines the command block registers when in dpa mode. 5.10.9.1 su pci dpa data port register - supddr the su pci dpa data port register is a 16-bit read/write register and is used to transfer data during programmed i/o (pio) mode reads/writes. on the gd31244 controller, the data port register may also be read or written as a 32-bit data port. the gd31244 controller internally breaks the 32-bit transaction into two back-to-back 16-bit transactions. it is recommended that the data port register is always accessed with either 16-bit or 32-bit quantity for a given pio sequence. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. . table 118. su pci dpa data port register - supddr bit default description 15:00 0000h data port - this register is used to transfer data during pio reads and writes. this register shall be accessed only when the drq bit in the su pci dpa status register - supdsr is set. pci attributes 15 12 8 4 0 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 200h, port 1 = 400h port 2 = 600h, port 3 = 800h
204 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.9.2 su pci dpa error register - supder the su pci dpa error register is a 8-bit read-only register. the su pci dpa error register contains error status for the current command. the content of this register shall be valid when the err bit is set in the su pci dpa status register - supdsr . the su pci dpa error register is command dependent and the bits are defined in the at attachment with packet interface-6 (ata/atapi-6) specification . table 119. su pci dpa error register - supder bit default description 07:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a diagnostic code. th e diagnostic code is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . the bits in this register are command dependent. the bits are only valid when the err bit (bit 0) in the su pci dpa status register - supdsr is set. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . pci attributes 74 0 ro ro ro ro ro ro ro ro 3 attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 204h, port 1 = 404h port 2 = 604h, port 3 = 804h
developer?s manual april 2004 205 intel ? 31244 pci-x to serial ata controller programming interface 5.10.9.3 su pci dpa features register - supdfr the su pci dpa features register is a 16-bit register. the content of the su pci dpa features register is a command parameter. the content of this register must be loaded before the su pci dpa command register is written. the content of the su pci dpa features register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 120. su pci dpa features register - supdfr bit default description 15:00 00h features - this register is command dependent. for example, it may be a parameter as an extension to the ide command register. pci attributes 15 12 8 4 0 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set wo = write only rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 206h, port 1 = 406h port 2 = 606h, port 3 = 806h
206 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.9.4 su pci dpa sector count register - supdscr the su pci dpa sector count register is a 16-bit read/write register. the content of the su pci dpa sector count register is a command parameter. the content of this register must be loaded before the su pci dpa command register is written. the content of the su pci dpa sector count register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 121. su pci dpa sector count register - supdscr bit default description 15:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a signature value. th e signature value is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . sector count/lba low:  chs addressing - only the lower byte is used for specifying a sector count.  28-bit lba addressing - only the lower byte is used for specifying a sector count.  48-bit lba addressing - a 16-bit value is used for specifying a sector count. pci attributes 1512840 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 208h, port 1 = 408h port 2 = 608h, port 3 = 808h
developer?s manual april 2004 207 intel ? 31244 pci-x to serial ata controller programming interface 5.10.9.5 su pci dpa sector number register - supdsnr the su pci dpa sector number register is a 16-bit read/write register. the content of the su pci dpa sector number register is a command parameter. the content of this register must be loaded before the su pci dpa command register is written. the content of this register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 122. su pci dpa sector number register - supdsnr bit default description 15:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a signature value. th e signature value is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . sector number/lba low- this field is dependent on the device access methods. there are three method:  chs addressing: this field indicates the device sector number to request as part of the cylinder/head/sector format.  28-bit lba addressing: this lower eight bits of this field is used for bit positions lba[7:0] of the 28-bit address lba[27:0].  48-bit lba addressing: this upper and lower bytes of this field is used for bit positions lba[31:24] and lba[7:0] respectively of the 48-bit addressing lba[47:0]. pci attributes 1512840 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 20ch, port 1 = 40ch port 2 = 60ch, port 3 = 80ch
208 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.9.6 su pci dpa cylinder low register - supdclr the su pci dpa cylinder low register is a 16-bit read/write register. the content of the su pci dpa cylinder low register is a command parameter. the content of this register must be loaded before the su pci dpa command register is written. the content of the su pci dpa cylinder low register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 123. su pci dpa cylinder low register - supdclr bit default description 15:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a signature value. th e signature value is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . cylinder low/lba mid - this field is dependent on the device access methods. there are three method:  chs addressing: this field indicates the lower cylinder byte to request as part of the cylinder/head/sector format.  28-bit lba addressing: this lower eight bits of this field is used for bit positions lba[15:8] of the 28-bit address lba[27:0].  48-bit lba addressing: this upper and lower bytes of this field is used for bit positions lba[39:32] and lba[15:8] respectively of the 48-bit addressing lba[47:0]. pci attributes 1512840 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 210h, port 1 = 410h port 2 = 610h, port 3 = 810h
developer?s manual april 2004 209 intel ? 31244 pci-x to serial ata controller programming interface 5.10.9.7 su pci dpa cylinder high register - supdchr the su pci dpa cylinder high register is a 16-bit read/write register. the content of the su pci dpa cylinder high register is a command parameter. the content of this register must be loaded before the su pci dpa command register is written. the content of the su pci dpa cylinder high register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 124. su pci dpa cylinder high register - supdchr bit default description 15:00 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a signature value. th e signature value is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . cylinder high/lba high - this field is dependent on the device access methods. there are three method:  chs addressing: this field specifies the higher cylinder byte to request as part of the cylinder/head/sector format.  28-bit lba addressing: this lower eight bits of this field is used for bit positions lba[23:16] of the 28-bit address lba[27:0].  48-bit lba addressing: the upper and lower bytes of this field is used for bit positions lba[47:40] and lba[23:16] respectively of the 48-bit addressing lba[47:0]. pci attributes 1512840 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 214h, port 1 = 414h port 2 = 614h, port 3 = 814h
210 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.9.8 su pci dpa device/head register - supddr this su pci dpa device/head register is an 8-bit read/write register. the content of the su pci dpa device/head register is a command parameter. the content of this register must be loaded before the su pci dpa command register is written. the content of the su pci dpa device/head register is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 125. su pci dpa device/head register - supddhr bit default description 07 device dependent a a. after a hardware reset, software reset, or an execute device diagnostic command, the device will return a signature value. th e signature value is device dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . reserved 06 logical addressing mode - this bit indicates the addressing mode: 0 = chs mode 1 = lba mode 05 reserved 04 reserved. 03:00 head - this field is dependent on the device access methods. there are three methods:  chs addressing: this field indicates the head number for the cylinder/head/sector format.  28-bit lba addressing: this field is used for bit positions lba[27:24] of the 28-bit addressing lba[27:0].  48-bit lba mode: these bit are not part of the 48-bit lba address, but need to be set to 1111 2 . pci attributes 74 0 rv rw rv rv rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 218h, port 1 = 418h port 2 = 618h, port 3 = 818h
developer?s manual april 2004 211 intel ? 31244 pci-x to serial ata controller programming interface 5.10.9.9 su pci dpa status register - supdsr the su pci dpa status register is an 8-bit read-only register. this register provides the status of the device and the interface. reading this register implicitly clears any pending interrupt. instead, the alternate status register may be used to read the status of a device without causing any pending interrupt to get cleared. some of the bits in this register are command-dependent and are described in the at attachment with packet interface-6 (ata/atapi-6) specification . information in this register is updated by the device sending a device-to-host register fis or pio setup fis. table 126. su pci dpa status register - supdsr bit default description 07 device dependent a a. after power-on, a value of 7fh is returned in this register when read before a device is detected on the serial link. this is consistent with the ata standard, indicating that a device is not connected to the cable. after the device is detected and a communication link is esta blished between the host and the device, a value of 80h will be read. bit 7 (bsy bit) set indicates that the device has been detected, but is busy executing its initialization and diagnostics. after the device is done with its initialization and diagnostics sequence, it will send a devic e-to-host register fis with bit 7 (bsy bit) cleared. bsy - when this bit is set the interface/device is busy. for example, the device may be working a previous command. this bit is set immediately after the command register is written and a host-to-device register fis is sent to the device, indicating that the interface is busy. the device is then responsible to clear this bit by sending a pio setup fis or device-to-host register fis. 06 drdy - this bit when set indicates that the device is ready. 05 this bit is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . 04 this bit is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . 03 drq - this bit is set when the device is ready to transfer data for pio transactions. 02 this bit is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . 01 this bit is command dependent. refer to the at attachment with packet interface-6 (ata/atapi-6) specification . 00 err - this bit when set indicates that an error occurred. the su pci dpa error register - supder provides further error information. pci attributes 74 0 ro ro ro ro ro ro ro ro 3 attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 21ch, port 1 = 41ch port 2 = 61ch, port 3 = 81ch
212 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.9.10 su pci dpa command register - supdcr the su pci dpa command register is an 8-bit register. a command is initiated by writing this register. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 127. su pci dpa command register - supdcr bit default description 07:00 00h command - this register is used to initiate a command. this register must be written last. for example, it must be written after the other command block registers are written. because the rest of the registers are parameters for the command. pci attributes 74 0 rw rw rw rw rw rw rw rw 3 attribute legend: rv = reserved pr = preserved rs = read/set wo = write only rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 21dh, port 1 = 41dh port 2 = 61dh, port 3 = 81dh
developer?s manual april 2004 213 intel ? 31244 pci-x to serial ata controller programming interface 5.10.10 su pci dpa mode control block registers this section defines the control block registers. 5.10.10.1 su pci dpa alternate status register - supdasr the su pci dpa alternate status register is an 8-bit read-only register. this register contains the same information as the su pci dpa status register. the difference is that when this register is read, any pending interrupt is not cleared. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 128. su pci dpa alternate status register - supdasr bit default description 07:00 refer to tab le 1 26 . alternate status register - this register contains the same information as in the ide status register. the difference is that when this register is read, any pending interrupts are not cleared. refer to section 126, ?su pci dpa status register - supdsr? on page 211 . pci attributes 74 0 ro ro ro ro ro ro ro ro 3 attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 228h, port 1 = 428h port 2 = 628h, port 3 = 828h
214 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.10.2 su pci dpa device control register - supddctlr the su pci dpa device control register is an 8-bit write-only register. the su pci dpa device control register is used to initiate a software reset to the device. refer to the at attachment with packet interface-6 (ata/atapi-6) specification. table 129. su pci dpa device control register - supddctlr bit default description 07 0 2 reserved. 06 0 2 reserved. 05 0 2 reserved. 04 0 2 reserved. 03 0 2 reserved. 02 0 2 srst - this bit is used by software to perform a device reset. writing a 1 requests the device to start the reset sequence, and writing a 0 request the device to terminate reset. 01 0 2 reserved. 00 0 2 reserved. this bit shall always be cleared. pci attributes 74 0 rv rv rv rv rv wo rv rv 3 attribute legend: rv = reserved pr = preserved rs = read/set wo = write only rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 229h, port 1 = 429h port 2 = 629h, port 3 = 829h
developer?s manual april 2004 215 intel ? 31244 pci-x to serial ata controller programming interface 5.10.11 su pci dpa mode dma registers this section defines the dpa dma registers. 5.10.11.1 su pci dpa upper dma descriptor table pointer register - supduddtpr the su pci dpa upper dma descriptor table pointer register contains the upper 32-bit pci address of the 64-bit pci address. in pci ide mode, the su pci dpa upper dma descriptor table pointer register is not used. this register allows the descriptor table to be located in any 4 gbyte memory space. table 130. su pci dpa upper dma descriptor table pointer register - supduddtpr bit default description 31:00 0000 0000h pci address - is the pci source/destination upper address. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 264h, port 1 = 464h port 2 = 664h, port 3 = 864h
216 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.11.2 su pci dpa upper dma data pointer register - supduddbpr this su pci dpa upper dma data pointer register contains the upper 32-bit pci address of the 64-bit pci address. all the descriptors in the descriptor table share this register. for example, all the data buffers must be located in the same 4 gbyte memory space. table 131. su pci dpa upper dma data buffer pointer register - supduddpr bit default description 31:00 0000 0000h pci address - the pci source/destination upper address. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 26ch, port 1 = 46ch port 2 = 66ch, port 3 = 86ch
developer?s manual april 2004 217 intel ? 31244 pci-x to serial ata controller programming interface 5.10.11.3 su pci dpa dma command register - supddcmdr the su pci dpa dma command register enables/disables the dma engine (bus master capability) and also provides direction control for dma transfers. . table 132. su pci dpa dma command register - supddcmdr bit default description 15:10 00h reserved 09 0 2 first party dma direction: 0 = from device to host 1 = from host to device 08 0 2 first party dma active: 0 = not active 1 = active 07:04 0h reserved 03 0 2 dma read/write control: 0 = reads memory to write fifo. fifo data is written to sata device. 1 = writes memory with fifo data. fifo contains data read from sata device. this bit must not be changed when the dma is active. while synchronous dma transfer is in progress, this bit will be read only. the bit will return to read/write once the synchronous dma transfer has been completed or halted. 02:01 00 2 reserved. 00 0 2 start/stop dma transfer: 1 = start; 0 = stop. when this bit is set to 1, the dma operation starts. the controller transfers data between the device and memory only while this bit is set. operation may be stopped by writing a 0 to this bit. this results in all state information being lost (i.e., operation cannot be stop and then resumed). when this bit is set to 0 while bus master operation is still active (i.e., bit 0 = 1 in the dma status register) and data transfer has not yet finished (i.e., bit 2 = 0 in the dma status register), the dma command is aborted and data transferred from the drive may be discarded by the sata port rather than being written to memory. this bit is intended to be set to 0 after the data transfer is completed, as indicated by either bit 0 or bit 2 set in the dma status register. pci attributes 1512840 rv rv rv rv rv rv ro ro rv rv rv rv rw rv rv rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 270h, port 1 = 470h port 2 = 670h, port 3 = 870h
218 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.11.4 su pci dpa dma status register - supddsr the su pci dpa dma status register provides status of the dma engine. . table 133. su pci dpa dma status register - supddsr bit default description 07 0 2 this bit is hardwired to 0. simplex only. 06 0 2 reserved. 05 1 2 dma capable: 1 = capable of dma transfers. this bit is a software controlled status bit that indicates dma device capability and does not affect hardware operation. 04:03 00 2 reserved. 02 0 2 interrupt status: this bit, when set to a 1, indicates when a device has asserted its interrupt line. when this bit is set to 1, all read data from the device has been transferred to memory and all write data has been transferred to the device. software sets this bit to a 0 by writing a 1 to it. 01 0 2 dma error: this bit is set to 1 under the following conditions while transferring data on the pci bus.  detected a master abort on the pci bus  detected a target abort on the pci bus  detected a parity error on the pci bus software sets this bit to 0 by writing a 1 to it. 00 0 2 dma active: the gd31244 controller sets this bit to 1 when bit 0 in the su pci dpa dma command register is set to 1. refer to section 5.10.11.3, ?su pci dpa dma command register - supddcmdr? on page 217 . the gd31244 controller sets this bit to 0 when the last transfer is performed (where eot for that descriptor is set). the gd31244 controller also sets this bit to 0 when bit 0 of the ide channel 0 dma command register is set to 0. when this bit is read as a 0, all data transferred from the drive during the previous bus master command is visible in memory, unless the dma command was aborted. pci attributes 74 0 3 ro rv rw rv rv rc rc ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 272h, port 1 = 472h port 2 = 672h, port 3 = 872h
developer?s manual april 2004 219 intel ? 31244 pci-x to serial ata controller programming interface 5.10.11.5 su pci dpa dma descriptor table pointer register - supdddtpr this su pci dpa dma descriptor table pointer register contains the lower 32-bit pci address. the su pci dpa dma descriptor table pointer register points to system memory. table 134. su pci dpa dma descriptor table pointer register - supdddtpr bit default description 31:02 0000 0000h pci address - is lower pci address. this register contains the base address of the descriptor table. the descriptor table must be dword aligned and must not cross a 64 kbyte boundary. 01:00 00 2 reserved. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rv rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode bar0 offset port 0 = 274h, port 1 = 474h port 2 = 674h, port 3 = 874h
220 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12 su pci dpa mode superset registers this section defines the serial ata superset registers. these registers provide control and status of the serial ata bus, and also support new serial ata specific commands. 5.10.12.1 su pci dpa sata sstatus register - supdsssr the su pci dpa sata sstatus is a read-only register. the su pci dpa sata sstatus register provides status for the sata interface itself, and conveys the interface state at the time it is read and is updated continuously and asynchronously. the su pci dpa sata sstatus register is one of the scr registers defined in the serial ata/high-speed serialized at attachment, revision 1.0 rc-1. table 135. su pci dpa sata sstatus register - supdsssr (sheet 1 of 2) bit default description 31:12 0000_0h reserved 11:08 0000 2 ipm - interface power mode the ipm value indicates the current interface power management state 0000 2 - device is not present or communication has not been established 0001 2 - interface in active state 0010 2 - interface in partial power management state 0110 2 - interface in slumber power management state all other values are reserved. the default value after reset is 0000 2 . after communications between the host controller and the device is established, the value will change to reset 0001 2 . 07:04 0000 2 spd - the spd value indicates the negotiated interface communication speed established 0000 2 - no negotiated speed because the device is not present or communication is not established 0001 2 - generation 1 communication rate negotiated all other values are reserved. the default value after reset is 0000 2 . after communications between the host controller and the device is established, the value will change to reset 0001 2 . pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar5 offset = 000h, dpa mode bar0 dpa mode offset port 0 = 300h, port 1 = 500h port 2 = 700h, port 3 = 900h
developer?s manual april 2004 221 intel ? 31244 pci-x to serial ata controller programming interface 03:00 0000 2 det - device detection mode: the det value indicates the interface device detection state 0000 2 - no device detected and the phy communication not established 0001 2 - device presence detected but phy communication not established 0011 2 - device presence detected and phy communication established 0100 2 - phy offline as a result of the interface being disabled or running in bist loopback all other values are reserved. the default value after reset is 0000 2 . after communications between the host controller and the device is established, the value will change to reset 0011 2 . table 135. su pci dpa sata sstatus register - supdsssr (sheet 2 of 2) bit default description pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar5 offset = 000h, dpa mode bar0 dpa mode offset port 0 = 300h, port 1 = 500h port 2 = 700h, port 3 = 900h
222 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.2 su pci dpa sata serror register - supdsser this su pci dpa sata serror register provides the supplemental interface error information to complement the error information available in the su pci dpa error register. the su pci dpa sata serror register provides all the detected errors accumulated since the last time its was cleared. this register is broken into two 16-bit fields. bits [31:16] contains the diag field and bit [15:0] contains the err field. the err field contains error information for use by host software in determining the appropriate response to the error condition. the diag field contains diagnostic error information for use by diagnostic software in validating correct operation or isolating failure modes. not all the serror bits are implemented on the gd31244 controller. refer to the serial ata specification . table 136. su pci dpa sata serror register - supdsser (sheet 1 of 3) bit default description 31-26 000000 2 reserved 25 0 2 diag_f - invalid fis type: when set to one, this bit indicates that the fis type field was not recognized. for example the fis is invalid. this bit is cleared by writing a 1 to it. 24 0 2 diag_t - reserved, not implemented. 23 0 2 diag_s - reserved, not implemented. 22 0 2 diag_h - handshake error: when set to one, this bit indicates that one or more r_err handshake response was received in response to frame transmission. such errors may be the result of a crc error detected by the receiver. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 3, 11, 19, and 27 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 21 0 2 diag_c - crc error: when set to one, this bit indicates that one or more crc errors occurred. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 6, 14, 22, and 30 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 20 0 2 diag_d - disparity error: when set to one, this bit indicates that incorrect disparity was detected one or more times since the last time this bit was cleared. this bit is cleared by writing a 1 to it. pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rv rv rv rv rc rv rv rc rc rc rv rc rv rc rv rv rv rv rc rc rc rc rv rv rv rv rv rv rc rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar5 offset = 004h, dpa mode bar0 offset port 0 = 304h, port 1 = 504h port 2 = 704h, port 3 = 904h
developer?s manual april 2004 223 intel ? 31244 pci-x to serial ata controller programming interface 19 0 2 diag_b - not implemented. 18 0 2 diag_w - comm wake: when set to one, this bit indicates that a comm wake was detected by the phy. this bit is cleared by writing a 1 to it. the default value after reset is 0 2 . after comm wake is detected, the value will change to 1 2 . 17 0 2 diag_i - reserved, not implemented. 16 0 2 diag_n - phyrdy change state: when set to one this bit indicates that the phyrdy signal changed state. state change means going from ready to not-ready or not-ready to ready. this bit shall remain cleared when the phy was not detected as ready during the initialization process. when the phy goes ready after initialization, this bit shall transition to 1. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 0, 8, 16, and 24 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready (state change from not-ready to ready) as part of the initialization sequence, the value will change to 1 2 . 15-12 0000 2 reserved. 11 0 2 err_e - internal error: this bit indicates that a fifo error occurred due to a fifo overrun or underrun condition. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 2, 10, 18, and 26 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 10 0 2 err_p - protocol error: this bit when set indicates that a corrupted fis was received. this bit may indicate that the fis received was an invalid fis type or that the received fis was not properly structured. for example, incorrect length. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 4, 12, 20, and 28 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 09 varies with the signal level of the phy receive path err_c - non-recovered communication: this is an asynchronous signal which reflects the signal level of the phy receive path. when high, this bit indicates that there is no signal detected on the phy receive path (rx). this may occur from a faulty interconnect, removal of a device, or the signal level is simply below the reference point. 08 0 2 err_t - non-recovered transient data integrity error: this bit indicates that either a crc error, disparity error, or the receipt of an r_err primitive occurred in response to a data fis. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 5, 13, 21, and 29 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . 07:02 000000 2 reserved table 136. su pci dpa sata serror register - supdsser (sheet 2 of 3) bit default description pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rv rv rv rv rc rv rv rc rc rc rv rc rv rc rv rv rv rv rc rc rc rc rv rv rv rv rv rv rc rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar5 offset = 004h, dpa mode bar0 offset port 0 = 304h, port 1 = 504h port 2 = 704h, port 3 = 904h
224 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 01 0 2 err_m - recovered communications error: this bit indicates that the phy went from not-ready to ready. this bit shall remain cleared when the phy was not detected as ready during the initialization process. when the phy goes ready after initialization, this bit shall transition to 1. this bit is cleared by writing a 1 to it. this bit is reported as an interrupt on bit 1, 9, 17, and 25 of the sata interrupt pending register for sata ports 0, 1, 2, and 3 respectively. refer to table 116, ?su pci dpa interrupt pending register - supdipr? on page 194 . the default value after reset is 0 2 , for example the phy will not be ready. when the phy becomes ready as part of the initialization sequence, the value will change to 1 2 . 00 0 2 err_i - reserved, not implemented. table 136. su pci dpa sata serror register - supdsser (sheet 3 of 3) bit default description pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rv rv rv rv rc rv rv rc rc rc rv rc rv rc rv rv rv rv rc rc rc rc rv rv rv rv rv rv rc rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar5 offset = 004h, dpa mode bar0 offset port 0 = 304h, port 1 = 504h port 2 = 704h, port 3 = 904h
developer?s manual april 2004 225 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.3 su pci dpa sata scontrol register - supdsscr the su pci dpa sata scontrol register provides the interface by which software controls the sata interface capabilities. refer to the serial ata specification . the gd31244 controller does not support interface power management (ipm). writing to the ipm field will have no effect. table 137. su pci dpa sata scontrol register - supdsscr bit default description 31:12 0000 0h reserved 11:08 0000 2 ipm - the ipm field represents the enabled interface power management states that may be invoked: 0000 2 - no interface power management state restrictions 0001 2 - transitions to the partial power management state disabled 0010 2 - transitions to the slumber power management state disabled 0011 2 - transitions to the partial and slumber power slumber management states disabled all other values are reserved. note: note that the gd31244 controller does not support interface power management (ipm). writing to the ipm field will have no effect. 07:04 0000 2 spd - the spd field represents the maximum allowed communication speed to negotiate 0000 2 - no speed negotiation restrictions 0001 2 - limit speed negotiation to a rate not greater than generation 1 communication rate all other values are reserved. 03:00 varies with external state of dpa_mode# pin det - the det field controls the host adapter device detection and interface initialization. in pci ide mode, after pci reset is deasserted, the default value of this field will be 0000 2 . this will implicitly initiate an initialization sequence. in dpa mode, after pci reset is deasserted, the default value of this field will be 0100 2 . this will cause the phy to stay offline, and will not cause an initialization sequence. to exit the offline state, a 0000 2 must be written. the transition from 0100 2 -> 0000 2 will initiate an initialization sequence. 0000 2 - no device detection or initialization action requested. the det field must be returned into this state from any other states. for example, when an initialization sequence (writing 0001 2 ) is to be initiated, the write sequence to the det field need to be as follows: 0000 2 ->0001 2 ->0000 2 . 0001 2 - perform interface communication initialization sequence (hard reset). the initialization sequence is triggered when the det field transitions from 0000 2 ->0001 2 . once a value of 0001 2 is written to the det field, a write of 0000 2 may immediately follow. when a second transition of 0000 2 ->0001 2 is detected while a previous initialization sequence is in progress, a new initial- ization sequence will be re-triggered. 0100 2 - disable the serial ata interface and put the phy in offline mode. all other values are reserved. pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar5 offset = 008h, dpa mode bar0 offset port 0 = 308h, port 1 = 508h port 2 = 708h, port 3 = 908h
226 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.4 su pci dpa set device bits register - supdsdbr the su pci dpa set device bits register is a 32-bit register. this register reflects the content of the set device bit fis reserved dword. table 138. su pci dpa set device bits register - supdsdbr bit default description 31:00 0000_0000h this is the sactive register. the serial ata ii native command queueing specification defines this register as write read. writing one to any bit will set the bait. the bits are cleared by the device set device bits fis word 1 containing a 1 in that bit position. writing a 0 to these bits by the host will not clear them. pci a ttributes 28 24 20 16 12 8 4 0 31 rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs rs attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 00ch, dpa mode bar0 offset port 0 = 30ch, port 1 = 50ch port 2 = 70ch, port 3 = 90ch
developer?s manual april 2004 227 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.5 su pci dpa phy feature register - supdpfr the su pci dpa phy feature register is a 32-bit register. this register may be used to enable the full voltage swing on all the sata ports, for extended applications such as backplanes or external cables. table 139. su pci dpa phy feature register - supdpfr bit default description 31:20 000h reserved. 19:17 000 2 reserved. 16 0 2 reserved. 15 0 2 reserved. 14 0 2 full voltage swing - when high, the transmitter output buffer for all of the ports will be in high swing mode for extended applications such as backplanes or external cables. when low, the transmitter output is compliant to serial ata specifications. 13 0 2 when high, the serialized data in the transmitter is wrapped around to the input of the clock recovery unit (cru) in the receiver. when low, the rxxp/rxxn input is used by the receiver. 12 0 2 when high, the cable equalizer within the receiver?s input buffer is disabled. when low, the cable equalizer is enabled. 11:10 00 2 these two bits select the receiver?s signal detect threshold level as follows:  00 nominal setting: ~75 - 150 mv  01 this reduces the nominal threshold by approximately ~25 mv  10 this increases the nominal threshold by approximately ~25 mv  11 this increases the nominal threshold by approximately ~50 mv. 09 0 2 bit 8 must be set high for bit 9 to enable or disable the serdes tx buffers. with bit 8 set high and bit 9 low, the tx pins are enabled and driven from the core logic value. with bit 8 set high and bit 9 set high, the serdes tx buffer is disabled. 08 0 2 bit 8 is the mux control that selects between bit 9 or oob logic to enable or disable the serdes tx pins. when high, control is from bit 9. when low, serdes tx buffer is enabled when the oob sequence is active (while jtag scan is not active). 07:00 00h reserved. pci a ttributes 28 24 20 16 12 8 4 0 31 rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv ro rv rw rv rv rv rv rv rv rv rv rv rv rv rv rv rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar5 offset = 040h, dpa mode bar0 offset port 0 = 340h, port 1 = 540h port 2 = 740h, port 3 = 940h
228 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.6 su pci dpa bist fis control and status register - supdbfcsr the su pci dpa bist control and status register is a 32-bit register. this register may be used to send a bist activate fis to a far-end device. it may also be used to receive a bist activate fis from a far-end device. a far-end device may be placed in one of three modes: retimed loopback mode, afe analog loopback mode, and transmit-only mode. refer to the serial ata specification . the bist generator and data checker has 4 built-in patterns to be used in far-end retimed mode only. the first three modes are single patterns repeated indefinitely. the frame counter is not used for these patterns. the error will freeze at ffffh if that many errors are detected. this prevents false interpretations due to a counter rollover. the bist pattern 3 will send a counting pattern. the errors are not detected until three consecutive counts are detected. if this synchronization is never reached, then the error counter will contain 0. the frame counter will increment falsely if the pattern ffffh is received. this test was designed to characterize a mostly working sata physical connection. for such excessive error rates as would cause no three consecutive counting pattern dwords to be recognized correctly, this feature should not be relied upon. table 140. su pci dpa bist fis control and status register - supdbfcsr (sheet 1 of 3) bit default description 31:30 00 2 bist pattern select. these bits select the bist pattern to generate for far-end loopback testing. the pattern is generated by setting bit 23 of this register. 00 2 - d21.5s 01 2 - d24.3s 10 2 - 3(d10.2s) and k28.5 11 2 - counting pattern with smart comparison. 29:28 00 2 bist check selection. should be set to the same value as bist pattern select (bits [31:30]). setting with a different value will cause mismatch. 27 0 2 force a transmit side disparity error. errors will be forced for the duration of this bit being set. 26 0 2 force receive side disparity error. errors will be forced for the duration of this bit being set. 25 0 2 clear the bist errors/frames registers. writing a 1 to this bit will clear the bist errors register and bist frames register. this bit is always read as a 0. 24 0 2 bist check enable. this bit enables the checker to compare the incoming loopback data stream selected by bits [29:28]. this bit must be set to 1 for proper bist operation. when this bit is not set, the incoming data stream will not be verified. 23 0 2 bist pattern enable. this bit enables the pattern generation selected by bits [31:30]. note that sending a bist activate fis does not automatically enables the generation of the bist patterns. write to 1 to enable and 0 to disable. 22 0 2 invert encoder outputs (effectively inverts tx +/-). 21 0 2 invert decoder inputs (effectively inverts rx +/-) pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rv rv rw rw rw rv rv rv rv rv rv rw ro ro ro ro ro ro ro rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 044h, dpa mode offset port 0 = 344h, port 1 = 544h port 2 = 744h, port 3 = 944h
developer?s manual april 2004 229 intel ? 31244 pci-x to serial ata controller programming interface 20 0 2 enable near end loop back confirm 1=loopback, 0=normal. 19 0 2 oob bypass. setting this bit to a ?1? will cause oob processing to be bypassed. 18 0 2 setting this bit to a ?1? will force jtag disable. 17 0 2 setting this bit to a ?1? will bypass transmit and receive scramblers, as well as no cont primitive insertion. 16 0 2 setting this bit high will cause the phy to transmit a continuous stream of k28. 5s. this is an independent bit that simply sends a stream of k28.5s over the serial bus. does not require any other setup. 15 0 2 bist activate fis has been received, and this device is in bist mode. 14 0 2 bist activate fis received with transmit-only bit set. when set, this bit indicates that the far-end device is requesting a transmit-only setup, and to transmit the dwords in su pci dpa device bist data low register - supddbdlr and su pci dpa device bist data high register - supddbdhr . these are the dwords received as part of the bist activate fis. 13 0 2 bist activate fis received with align bypass bit set. this bit must be qualified when bit 14 is set. 12 0 2 bist activate fis received with scrambling bypass bit set. this bit must be qualified when bit 14 is set. 11 0 2 bist activate fis received with retimed bit set. when set, this bit indicates that the far-end device is requesting a retimed loopback setup path. 10 0 2 bist activate fis received with primitive bit set. this bit must be qualified when bit 14 is set. 09 0 2 bist activate fis received with afe loopback bit set. when set, this bit indicates that the far-end device is requesting an afe analog loopback each setup. 08 0 2 setting this bit high will cause the phy to transmit a continuous stream of k28.5s. this is an independent bit that sends a stream of k28.7s over the serial bus. does not require any other setup. 07 0 2 send bist activate fis. this bit is used to initiate the transfer of a bist activate fis to the far-end device. bits [6:1] must be setup accordingly before setting this bit. 06 0 2 send bist activate fis with transmit-only bit set. this bit is used to command the far-end device to place itself in a transmit-only mode, and to transmit data patterns indicated in the bist activate fis (data dwords) it received from the sender. bits 5, 4 and 2 may optionally be used when requesting this mode. 05 0 2 send bist activate fis with align bypass bit set. this bit may be used in conjunction with bit 6. 04 0 2 send bist activate fis with scrambling bypass bit set. this bit may be used in conjunction with bit 6. 03 0 2 send bist activate fis with retimed bit set. this bit is used to command the far-end device to setup a retimed loopback path. 02 0 2 send bist activate fis with primitive bit set. this bit may be used in conjunction with bit 6. 01 0 2 send bist activate fis with afe loopback bit set. this bit is used to command the far-end device to setup an afe analog loopback path. table 140. su pci dpa bist fis control and status register - supdbfcsr (sheet 2 of 3) bit default description pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rv rv rw rw rw rv rv rv rv rv rv rw ro ro ro ro ro ro ro rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 044h, dpa mode offset port 0 = 344h, port 1 = 544h port 2 = 744h, port 3 = 944h
230 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface to command the receiver into a far-end retimed loopback mode, bit 3 of the bist fis control and status register must be set. to command the receiver into the far-end analog loopback mode, bit 1 must be set. after the appropriate bit(s) are set in bits [6:1], the bist activate fis may be sent to the receiving device by setting bit 7. the gd31244 controller also provides the following registers for monitoring the bist tests:  bist error register  bist frame register the bist errors register tracks the number of errors detected. the bist frame register tracks when the 16-bit counting pattern is selected and the number of bist frames encountered. a frame is defined as one 6-bit counting pattern sequence. the following steps provide an example of how to set up and initiate a loopback test: 1. set bit 25 to reset the bist errors and bist frames registers. 2. set bits [31:30] to select one of the bist patterns. 3. set bits [29:28] with the same value as bits [31:30]. these bits define the pattern used for checking the data stream. 4. set bit 1 to select afe or bit 3 to select retimed loopback. 5. set bit 24 to enable the pattern generator. 6. set bit 23 to enable the pattern checker. note: to conclude the loopback test, the far-end device must be reset using a comreset/cominit sequence. 00 0 2 initiate a near end transmit-only based upon bits 6, 5, 4, and 2 and bist dwords - su pci dpa host bist data low register - supdhbdlr and su pci dpa host bist data high register - supdhbdhr . table 140. su pci dpa bist fis control and status register - supdbfcsr (sheet 3 of 3) bit default description pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rv rv rw rw rw rv rv rv rv rv rv rw ro ro ro ro ro ro ro rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 044h, dpa mode offset port 0 = 344h, port 1 = 544h port 2 = 744h, port 3 = 944h
developer?s manual april 2004 231 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.7 su pci dpa bist errors register - supdber the su pci dpa bist errors register is a 32-bit register. this register is used during far-end loopback testing. this register is updated/incremented each time an error is detected. table 141. su pci dpa bist errors register - supdber bit default description 31:16 0000h reserved 15:00 0000h bist errors. this register contains the number of errors that occurred since the last time the bist fis control and status register bit 25 was set. this register may count up to ffffh - only 16-bit is implemented. this register will not rollover after a count of ffffh is reached. for example, the counter will stop when a value of ffffh is reached. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 048h, dpa mode offset port 0 = 348h, port 1 = 548h port 2 = 748h, port 3 = 948h
232 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.8 su pci dpa bist frames register - supdbfr the su pci dpa bist frames register is a 32-bit register. this register is used during far-end loopback testing, and is only used for the counting pattern. refer to bits [31:30] of the su pci dpa bist fis control and status register - supdbfcsr for pattern selection. table 142. su pci dpa bist frames register - supdbfr bit default description 31:00 0000_0000h bist frames. this register contains the number of bist frames that occurred since the last time the bist fis control and status register bit 25 was set. a bist frame is 65536 dwords. refer to section 5.5, ?serial ata bist? on page 79 for a description of a bist frame. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode bar5 offset = 04ch, dpa mode offset port 0 = 34ch, port 1 = 54ch port 2 = 74ch, port 3 = 94ch
developer?s manual april 2004 233 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.9 su pci dpa host bist data low register - supdhbdlr the su pci dpa host bist data low register is the first 32-bit parameter of the sata bist activate host-to-device fis. refer to the serial ata specification . table 143. su pci dpa host bist data low register - supdhbdlr bit default description 31:00 0000_0000h this register contains the data transmitted as bist fis dword 1. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 050h, dpa mode offset port 0 = 350h, port 1 = 550h port 2 = 750h, port 3 = 950h
234 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.10 su pci dpa host bist data high register - supdhbdhr the su pci dpa host bist data high register is the second 32-bit parameter of the sata bist activate host-to-device fis. refer to the serial ata specification . table 144. su pci dpa host bist data high register - supdhbdhr bit default description 31:00 0000_0000h this register contains the data transmitted as bist fis dword 2. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 054h, dpa mode offset port 0 = 354h, port 1 = 554h port 2 = 754h, port 3 = 954h
developer?s manual april 2004 235 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.11 su pci dpa device bist data low register - supddbdlr the su pci dpa device bist data low register is the first 32-bit parameter of the sata bist activate device-to-host fis. refer to the serial ata specification . table 145. su pci dpa device bist data low register - supddbdlr bit default description 31:00 0000_0000h this register contains the data transmitted as bist fis dword 1. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 058h, dpa mode offset port 0 = 358h, port 1 = 558h port 2 = 758h, port 3 = 958h
236 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.12 su pci dpa device bist data high register - supddbdhr the su pci dpa device bist data high register is the second 32-bit parameter of the sata bist activate device-to-host fis. refer to the serial ata specification . table 146. su pci dpa device bist data high register - supddbdhr bit default description 31:00 0000_0000h this register contains the data transmitted as bist fis dword 2. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 05ch, dpa mode offset port 0 = 35ch, port 1 = 55ch port 2 = 75ch, port 3 = 95ch
developer?s manual april 2004 237 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.13 su pci dpa queuing table base address register low - supdqtbarl this register contains the lower values added to the dma buffer identifier to determine the base address of the prd. table 147. su pci dpa device bist data high register - supddbdhr bit default description 31:00 0000_0000h value used by the dma engine to add to the dma buffer identifier to get the base address of the prd, bits 31:0. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw ro rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 060h, dpa mode offset port 0 = 360h, port 1 = 560ch port 2 = 760h, port 3 = 960h
238 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.14 su pci dpa queuing table base address register high - supdqtbarh this register contains the lower values added to the dma buffer identifier to determine the base address of the prd. table 148. su pci dpa device bist data high register - supddbdhr bit default description 31:00 0000_0000h value used by the dma engine to add to the dma buffer identifier to get the base address of the prd, bits 63:32. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw ro rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 064h, dpa mode offset port 0 = 364h, port 1 = 564ch port 2 = 764h, port 3 = 964h
developer?s manual april 2004 239 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.15 su pci dpa dma setup fis control and status register - supddsfcsr the su pci dpa dma setup fis control and status register is a 32-bit register. this register is used to initiate a dma setup fis. this register also contains the status of a received dma setup fis. table 149. su pci dpa dma setup fis control and status register - supddsfcsr bit default description 31 0 2 direction bit. this bit affects first party setup fis word 0 direction bit. 0 = receive (receiver to transmitter) 1 = send (transmitter to receiver) 30 0 2 interrupt ? received first party setup fis with the i bit set. 29 0 2 reserved. 28 0 2 start dma setup fis bit. start transmission of dma setup fis. a one shot and will always read back a 0. 27 0 2 enable first party dma auto processing for command queuing. enables dma controller to automatically process dma setup fis data in order to choose a dma descriptor table for a queued command. 26 0 2 reserved. 25 0 2 reserved. 24 0 2 abort tsm ? setting this bit will stop the transport/link state machines. this bit is one-shot, and will be cleared after the tsm goes idle. 23 0 2 the last fis sent received an rnak primitive as response. 22 0 2 reserved. 21:16 000000 2 reserved. 15 0 2 reserved 14 0 2 reserved. 13 0 2 reserved. 12 0 2 reserved. 11 0 2 reserved. 10 0 2 reserved. 90 2 reserved. 80 2 reserved. 07:00 00h reserved. pci a ttributes 28 24 20 16 12 8 4 0 31 rw ro rv rw rw rv rv rw rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv rv attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 068h, dpa mode offset port 0 = 368h, port 1 = 568h port 2 = 768h, port 3 = 968h
240 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.16 su pci dpa host dma buffer identifier low register - supdhdbilr the su pci dpa host dma buffer identifier low register is the first dword parameter of the sata dma setup host-to-device fis. refer to the serial ata specification . table 150. su pci dpa host dma buffer identifier low register - supdhdbilr bit default description 31:00 0000_0000h buffer identifier low - this is the lower dword of a 64-bit buffer identifier, which may be used to identify a dma buffer region in host memory. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 06ch, dpa mode offset port 0 = 36ch, port 1 = 56ch port 2 = 76ch, port 3 = 96ch
developer?s manual april 2004 241 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.17 su pci dpa host dma buffer identifier high register - supdhdbihr the su pci dpa host dma buffer identifier high register is the second dword parameter of the sata dma setup host-to-device fis. refer to the serial ata specification . table 151. su pci dpa host dma buffer identifier high register - supdhdbihr bit default description 31:00 0000_0000h buffer identifier high - this is the upper dword of a 64-bit buffer identifier, which may be used to identify a dma buffer region in host memory. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 070h, dpa mode offset port 0 = 370h, port 1 = 570h port 2 = 770h, port 3 = 970h
242 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.18 su pci dpa host reserved dword register 0 - supdhrdr0 the su pci dpa host reserved register 0 is the third dword parameter of the sata dma setup host-to-device fis. refer to the serial ata specification . table 152. su pci dpa host reserved dword register 0 - supdhrdr 0 bit default description 31:00 0000_0000h reserved dword in the sata dma setup host-to-device fis. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 074h, dpa mode offset port 0 = 374h, port 1 = 574h port 2 = 774h, port 3 = 974h
developer?s manual april 2004 243 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.19 su pci dpa host dma buffer offset register - supdhdbor the su pci dpa host dma buffer offset register is the fourth dword parameter of the sata dma setup host-to-device fis. refer to the serial ata specification . table 153. su pci dpa host dma buffer offset register - supdhdbor bit default description 31:00 0000_0000h buffer offset - this is the byte offset into the dma buffer region. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 078h, dpa mode offset port 0 = 378h, port 1 = 578h port 2 = 778h, port 3 = 978h
244 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.20 su pci dpa host dma transfer count register - supdhdtcr the su pci dpa host dma transfer count register is the fifth dword parameter of the sata dma setup host-to-device fis. refer to the serial ata specification . table 154. su pci dpa host dma transfer count register - supdhdtcr bit default description 31:00 0000_0000h transfer count - this is the number of bytes that will be read or written by the device. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 07ch, dpa mode offset port 0 = 37ch, port 1 = 57ch port 2 = 77ch, port 3 = 97ch
developer?s manual april 2004 245 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.21 su pci dpa host reser ved dword register 1- supdhrdr1 the su pci dpa host reserved register 1 is the sixth dword parameter of the sata dma setup host-to-device fis. refer to the serial ata specification . table 155. su pci dpa host reserved dword register 1- supdhrdr 1 bit default description 31:00 0000_0000h reserved dword in the sata dma setup host-to-device fis. pci a ttributes 28 24 20 16 12 8 4 0 31 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 080h, dpa mode offset port 0 = 380h, port 1 = 580h port 2 = 780h, port 3 = 980h
246 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.22 su pci dpa device dma buffer identifier low register - supdddbilr the su pci dpa device dma buffer identifier low register is the first dword parameter of the sata dma setup device-to-host fis. refer to the serial ata specification . table 156. su pci dpa device dma buffer identifier low register - supdddbilr bit default description 31:00 0000_0000h buffer identifier low - this is the lower dword of a 64-bit buffer identifier, which may be used to identify a dma buffer region of the first party setup fis received from a device. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 084h, dpa mode offset port 0 = 384h, port 1 = 584h port 2 = 784h, port 3 = 984h
developer?s manual april 2004 247 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.23 su pci dpa device dma buffer identifier high register - supdddbihr the su pci dpa device dma buffer identifier high register is the second dword parameter of the sata dma setup device-to-host fis. refer to the serial ata specification . table 157. su pci dpa device dma buffer identifier high register - supdddbihr bit default description 31:00 0000_0000h buffer identifier high - this is the upper 32 bits of the dma buffer identifier field of the first party setup fis received from a device. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 088h, dpa mode offset port 0 = 388h, port 1 = 588h port 2 = 788h, port 3 = 988h
248 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.24 su pci dpa host reserved dword register 0 - supdhrdr0 the su pci dpa received host reserved register 0 is the third dword parameter of the sata dma setup host-to-device fis. refer to the serial ata specification . table 158. su pci dpa device reserved dword register 0 - supddrdr0 bit default description 31:00 0000_0000h reserved dword in the sata dma setup device-to-host fis. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 08ch, dpa mode offset port 0 = 38ch, port 1 = 58ch port 2 = 78ch, port 3 = 98ch
developer?s manual april 2004 249 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.25 su pci dpa device dma buffer offset register - supdddbor the su pci dpa device dma buffer offset register is the fourth dword parameter of the sata dma setup device-to-host fis. refer to the serial ata specification . table 159. su pci dpa device dma buffer offset register - supdddbor bit default description 31:00 0000_0000h buffer offset - the buffer offset field of the first party setup fis. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 090h, dpa mode offset port 0 = 390h, port 1 = 590h port 2 = 790h, port 3 = 990h
250 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.26 su pci dpa device dma transfer count register - supdddtcr the su pci dpa device dma transfer count register is the fifth dword parameter of the sata dma setup device-to-host fis. refer to the serial ata specification . table 160. su pci dpa device dma transfer count register - supddtcr bit default description 31:00 0000_0000h transfer count - the transfer count field of the first party setup fis. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible dpa mode offset port 0 = 394h, port 1 = 594h port 2 = 794h, port 3 = 994h p ci ide mode offset = 094h,
developer?s manual april 2004 251 intel ? 31244 pci-x to serial ata controller programming interface 5.10.12.27 su pci dpa device r eserved dword register 1 - supddrdr1 the su pci dpa device reserved register 1 is the sixth dword parameter of the sata dma setup host-to-device fis. refer to the serial ata specification . table 161. su pci dpa device reserved dword register 1 - supddrdr1 bit default description 31:00 0000_0000h reserved dword in the sata dma setup device-to-host fis. pci a ttributes 28 24 20 16 12 8 4 0 31 ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro ro attribute legend: rv = reserved pr = preserved rs = read/set rw = read/write rc = read clear ro = read only na = not accessible pci ide mode offset = 098h, dpa mode offset port 0 = 398h, port 1 = 598h port 2 = 798h, port 3 = 998h
252 april 2004 developer?s manual intel ? 31244 pci-x to serial ata controller programming interface this page left intentionally blank


▲Up To Search▲   

 
Price & Availability of EW31244SL7QV

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X